hannah-eee/arch-wiki-docs huggingface dataset:
dm-crypt

Related articles
Data-at-rest encryption
Removing system encryption
dm-crypt is the Linux kernel's
device mapper
crypto target. From
Wikipedia:dm-crypt
, it is:
a transparent disk encryption subsystem in [the] Linux kernel... [It is] implemented as a device mapper target and may be stacked on top of other device mapper transformations.  It can thus encrypt whole disks (including removable media), partitions, software RAID volumes, logical volumes, as well as files. It appears as a block device, which can be used to back file systems, swap or as an LVM physical volume.
Usage
/Drive preparation
Deals with operations like
securely erasing the drive
and
dm-crypt
specific points for
partitioning it
.
/Device encryption
Covers how to manually utilize dm-crypt to encrypt a system through the
cryptsetup
command. It covers examples of the
encryption options
, deals with the creation of
keyfiles
, LUKS specific commands for
key management
as well as for
Backup and restore
.
/System configuration
Illustrates how to configure
mkinitcpio
,
kernel parameters
and the
crypttab
file when encrypting a system.
/Swap encryption
Covers how to add swap to an encrypted system, as swap must be encrypted as well to protect any data swapped out by the system. This part details methods
without
and
with
suspend-to-disk support.
/Specialties
Deals with special operations like
securing the unencrypted boot partition
,
using GPG or OpenSSL encrypted keyfiles
, a method to
boot and unlock via the network
, another for
setting up discard/TRIM for a SSD
, and sections dealing with
the encrypt hook and multiple disks
.
/Mounting at login
Example scenarios
/Encrypting a non-root file system
If you need to encrypt a device that is not used for booting a system, like a
partition
or a
file container
.
/Encrypting an entire system
If you want to encrypt an entire system, in particular a root partition. Several scenarios are covered, including the use of
dm-crypt
with the
LUKS
extension,
plain
mode encryption and encryption and
LVM
.
See also
dm-crypt
- The project homepage
cryptsetup
- The LUKS homepage and
FAQ
- the main and foremost help resource.
dm-integrity

Related articles
dm-verity
The
dm-integrity
kernel
device mapper
target provides an additional layer with per-sector integrity information. In standalone mode it supports CRC (CRC-32, CRC-32C) or hash functions (xxHash64, SHA-1, SHA-256). It can also be used with
dm-crypt
to provide authenticated disk encryption with HMAC-SHA256. It uses journaling for guaranteeing write atomicity by default, which effectively halves the write speed.
Usage
The main utility for standalone management is
integritysetup
, included in the
cryptsetup
package. The
dm-integrity
layer can also be activated and managed with the
cryptsetup
utility or with
LVM
. This section covers management in standalone mode.
Format
The underlying device/partition/volume has to be formatted and the initial integrity metadata written, which takes some time. The integrity algorithm
algo
can be one of
crc32c
,
crc32
,
xxhash64
,
sha1
or
sha256
.
# integritysetup format -v --integrity
algo
/dev/
device
Open
A
dm-integrity
-protected volume is opened with:
# integritysetup open -v --integrity
algo
/dev/
device
volname
Afterwards the volume can be accessed through
/dev/mapper/
volname
.
Close
After all contained filesystems are unmounted the volume is closed with:
# integritysetup close -v
volname
/etc/integritytab
The
/etc/integritytab
file can be set up to open specific volumes at system boot. See
integritytab(5)
.
See also
integritysetup(8)
cryptsetup(8)
dm-integrity kernel documentation
dmenu

Related articles
List of applications/Other#Application launchers
dmenu
is a fast and lightweight dynamic menu for X. It reads arbitrary text from stdin, and creates a menu with one item for each line. The user can then select an item, through the arrow keys or typing a part of the name, and the line is printed to stdout.
dmenu_run
is a wrapper that ships with the dmenu distribution that allows its use as an application launcher.
Installation
Install
the
dmenu
package.
Various patched variants exist which extend dmenu's default functionality.
You may run
dmenu
with:
$ dmenu_run
Configuration
Now, you will want to attach the
dmenu_run
command to a keystroke combination. This can be done either via your window manager or desktop environment configuration, or with a program like
xbindkeys
. See the
Hotkeys
article for more information.
Displaying custom items
Custom items will be shown by separating them with a new line (
\n
) and piping them into
dmenu
. For example:
$ echo -e "first\nsecond\nthird" | dmenu
Manually adding items
dmenu
will look for executables in the directories defined in your
$PATH
. For information on modifying your
$PATH
see
environment variables
.
Fonts
dmenu
can display fonts using
XFT
. This example will run dmenu using
ttf-droid
:
$ dmenu_run -fn 'Droid Sans Mono-9'
Support for shell aliases
dmenu
does not support
shell aliases
. To have
dmenu
recognize your aliases,
install
the
dmenu-recent-aliases-git
AUR
package and run
dmenu-recent-aliases
. Your aliases must be in
~/.bash_aliases
to be recognized by
dmenu-recent-aliases
.
Support for history
To sort commands by recency, download
dmenu_run_history
to your
$PATH
and use
dmenu_run_history
instead of
dmenu_run
.
Tips and tricks
Taking input using dmenu
Inside a script (e.g. launched from a shortcut), getting user input is sometimes required. We can use dmenu for this, by passing it an EOF: the selection field will be empty and dmenu can take user input.
Since reading
/dev/null
will return an EOF, this can simply be done by the following command:
$ dmenu < /dev/null
Embedding in current terminal
Dmenu can be embeded inside any window using the
-w id
option.
To embed it inside the currenctly active window (like for example the terminal it is being run from), use
xdo
to get its id:
$ echo hello | dmenu -w $(xdo id)
Troubleshooting
No locale support
Running
dmenu_run
results in the following error message:
$ dmenu_run
no locale support
Make sure that the environment variable
LANG
is correctly set. See the following for more information:
Locale#Troubleshooting
Missing menu entries
If certain entries are missing from
dmenu
, the cache may be malformed. Delete it and restart
dmenu
.
$ rm ~/.dmenu_cache
$ rm ~/.cache/dmenu_run
Note that there will most likely be only one cache file, depending on if
$XDG_CACHE_HOME
is set. See the contents of
/usr/bin/dmenu_run
for more information.
Environment variables
Environment variables needed for applications should instead be added to
/etc/environment
.
See also
dmenu
– The official dmenu website
Dmenu Hacking thread
– Dmenu hacking thread in Arch Linux forum. An overview of scripts is provided in the
dmenu_scripts collection
.
DNS-over-HTTPS

Related articles
DNS over HTTPS servers
DNS-over-HTTPS
is an implementation of
DNS over HTTPS
. It can act as a stub resolver.
Installation
Install
the
dns-over-https
package.
Client startup
Disable any services bound to port 53
To see if any programs are using port 53, run:
$ ss -lp 'sport = :domain'
If the output contains more than the first line of column names, you need to disable whatever service is using port 53. You are ready to proceed once the above command outputs nothing more than the following line:
Netid State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port Process
Change system DNS server
Change your system's DNS server to an address in the
listen =
section of the configuration file. If you don't know what you're doing,
127.0.0.1
is recommended.
This can be accomplished either through your
Network Manager
or through editing
/etc/resolv.conf
.
Startup
Start
or
enable
doh-client.service
.
Test configuration
To test if your system's DNS works, type
nslookup www.google.com
into the command line. Note that this will work before DNS-over-HTTPS is configured, assuming you had a DNS configuration before installing this.
Client configuration
The client configuration file is
/etc/dns-over-https/doh-client.conf
by default
Select preferred upstream DNS server
To select a preferred DNS server, uncomment one of the profiles.
If your preferred server is not listed, you may use the following template in the
[upstream]
section.
/etc/dns-over-https/doh-client.conf
[[upstream.upstream_ietf]]
    url = "https://
IP_or_web_address
/dns-query"
    weight = 20
Note
Choose a DNS resolver you trust. See
Domain name resolution#Third-party DNS services
.
Troubleshooting
Service does not start properly in wired connection
As
explained by the developer
:
ArchLinux doesn’t come with a default network management framework, thus systemd comes without online detection pre-configured.
If you are on Wi-Fi, I suggest making sure systemd’s online detection can function properly. I believe your system have already installed some network management framework such as NetworkManager to help you manage Wi-Fi passwords.
Or, if you are on wired network, simply modifying the .service file to disable online detection would be the easiest solution. Installing NetworkManager for a non-mobile machine might be against the K.I.S.S. principle, and we don’t want it.
Upstream
suggests
to use a
drop-in snippet
to your service file to:
/etc/systemd/system/doh-client.service.d/override.conf
[Unit]
After=multi-user.target

[Service]
Type=idle
DocBook

From
Wikipedia
:
DocBook is a semantic markup language for technical documentation. It was originally intended for writing technical documents related to computer hardware and software, but it can be used for any other sort of documentation.
As a semantic language, DocBook enables its users to create document content in a presentation-neutral form that captures the logical structure of the content; that content can then be published in a variety of formats, including HTML, XHTML, EPUB, PDF, man pages, Web help and HTML Help, without requiring users to make any changes to the source. In other words, when a document is written in DocBook format it becomes easily portable into other formats, rather than needing to be rewritten.
Installation
Install
docbook-xml
and
docbook-xsl
.
Usage
Validating XML file
To validate the XML file, use:
$ xmllint --valid --noout
/path/to/file.xml
This will generate no output if the file is proper XML.
Converting into XHTML
Single file
To convert into a XHTML file (single file), use:
$ xsltproc /usr/share/xml/docbook/$(pacman -Q docbook-xsl | cut -d ' ' -f 2 | cut -d '-' -f 1)/xhtml/docbook.xsl
/path/to/file.xml
>
output.html
Segmented
To convert into a segmented XHTML file (each section in its own file), use:
$ xsltproc /usr/share/xml/docbook/$(pacman -Q docbook-xsl | cut -d ' ' -f 2 | cut -d '-' -f 1)/xhtml/chunk.xsl
/path/to/file.xml
Automating
Add the following to your
shell configuration file
:
alias doc2html1="xsltproc /usr/share/xml/docbook/xhtml/docbook.xsl"
alias doc2multihtml="xsltproc /usr/share/xml/docbook/xhtml/chunk.xsl"
alias docvalidate="xmllint --valid --noout"
Troubleshooting
Compilation errors
If you have already installed the packages above, but begin to see compilation errors such as:
GEN    appdata-validate.1
I/O error : Attempt to load network entity
https://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
warning: failed to load external entity "
https://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
"
cannot parse
https://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
Reinstall DocBook
, if something has corrupted the catalog file, this will run
xmlcatalog
and rebuild
/etc/xml/catalog
, which may resolve these compile errors.
Tips and tricks
Comments
Comments are somewhat problematic within an XML file. One possibility is to use a non-existing processing-instruction, e.g.:
<?ignore
comment line 1: can be a valid xml line
comment line 2: can be a valid xml line
?>
See
[1]
for more information on this problem.
See also
https://www.w3schools.com/xml/
Dolphin emulator

Dolphin
is a Nintendo GameCube and Wii emulator, currently supporting the x86_64 and AArch64 architectures. Dolphin is available for Linux, macOS, Windows, and Android. It is a free and open source, community-developed project.
Dolphin was the first GameCube and Wii emulator, and currently the only one capable of playing commercial games.
Installation
Install
the
dolphin-emu
package.
Playing
Note
Dolphin is a resource-heavy application, so expect not all games to run properly. See the reason
here
.
Click on browse to set a directory of ISOs so that they are shown as a library on Dolphin's default screen. Otherwise just click
Open
and select the file.
Also check the official
configuration guide
and
performance guide
.
Dolphin's Wiki
Whenever a game does not work properly, try reading its page on
Dolphin's wiki
. Listed there are tips on setting up the emulator for each game, version compatibility charts, testing entries, troubleshooting and video previews. Contributions, such as testing entries and workarounds are welcome and help other users.
Here is a
xfce4-whiskermenu-plugin
search action command for searching on Dolphin's wiki:
exo-open --launch WebBrowser
https://wiki.dolphin-emu.org/index.php?search=%u
Use gamepad motion controls
Dolphin can use the motion sensors included with gamepads, such as the DualShock 4 or Switch Pro Controller, to emulate the motion in Wii Remotes.
The easiest way to set this up is to choose the SDL controller instead of the evdev controller in the controller configuration. Motion Inputs should already be set up by the
Default
mapping.
If moving the gamepad doesn't produce a reaction, SDL might not have permission to read the motion sensors: see
Gamepad#Device permissions
.
If you cannot use SDL for some reason and need motion controls with evdev, see
this guide
.
Themes
To change the theme of Dolphin, place a css file in
~/.local/share/dolphin-emu/Styles
directory. Then go to the
interface
tab in the
options
and check the
Use Custom User Style
box. Click on the
User Style
tab to change the theme.
Troubleshooting
Input is not detected after emulation window loses focus once
Enable
Render to Main Window
under Graphics Settings, or enable
Background Input
under Controller Settings.
[1]
See also
Wikipedia:Dolphin (emulator)
Dolphin's performance guide.
Dolphin's FAQ
Dolphin's wiki entry for legally obtaining game dumps.
DOSBox

Related articles
Wine
Proton
Video game platform emulators
DOSBox
is an x86 PC DOS-emulator for running old DOS games or programs.
Installation
Install
the
dosbox
package. DOSBox has not seen a new release since 2019, you may want to try the
dosbox-svn
AUR
development version. Alternatively, two forks can be installed:
dosbox-staging
AUR
aims to modernize the codebase (and
some distributions
ship it as the default)
dosbox-x
AUR
tries to emulate hardware much more accurately
Configuration
No initial configuration is needed, however the official DOSBox manual refers to a configuration file named
dosbox.conf
. By default that file exists in your
~/.dosbox
folder.
You can also make a new configuration file on a per-application basis by copying
dosbox.conf
from
~/.dosbox
to the directory where your DOS app resides and modifying the settings accordingly. You can also create a configuration file automatically: simply run
dosbox
without any parameters inside your desired application's folder:
$ dosbox
Then at the DOS prompt, type:
Z:\> config -wc dosbox.conf
The configuration file
dosbox.conf
will then be saved in the current directory. Go in a change whatever settings you need.
The configuration options are described in the official
DOSBox wiki
.
Usage
A simple way to run DOSBox is to place your DOS game (or its setup files) into a directory and then run
dosbox
with the directory path appended. For example:
$ dosbox ./game-folder/
You should now have a DOS prompt whose working directory is the one specified above. From there, you can execute the desired programs:
C:\> SETUP.EXE
Tips and tricks
Free DOSBox focus
If DOSBox traps your focus, use
Ctrl+F10
to free it.
Play music in DOS games
To play music, some DOS games require a
MIDI
synthesizer which DOSBox does not emulate. However, DOSBox can use one if it is available. A software synthesizer such as
FluidSynth
or
Timidity
can be used if your computer does not have a hardware synthesizer.
See also
The official DOSBox website
DOSGames.com
- large repository of DOS games.
Abandonia
- large repository of old and abandoned DOS games.
Dropbear

This article or section is a candidate for merging with
Secure Shell
.
Notes:
Article is no longer big enough (Discuss in
Talk:Dropbear
)
Dropbear
is lightweight SSH server that is commonly run on routers and other low memory devices. It is also often configured to run during the boot process.
Installation
Install
the
dropbear
package.
Configuration
Dropbear server does not have any configuration file. It is configured with command line options.
Enable/start
dropbear.service
.
Disable password and root logins
Edit
the
dropbear.service
. This creates a new
drop-in file
. Adding content to it will override corresponding sections in main configuration.
Override the command to start Dropbear:
[Service]
ExecStart=
ExecStart=/usr/bin/dropbear -F -P /run/dropbear.pid -R -w -s
-R
Is used to generate hostkeys automatically.
-F
Is used to forbid forking into background.
-w
Is used to disallow root logins.
-s
Is used to disable password logins.
Set SSH key from GitLab
Change GitLab URL to your own.
$ mkdir -p ~/.ssh -m 0700
$ curl -sSLf https://gitlab.com/example.keys >> ~/.ssh/authorized_keys
dtach

From its website,
dtach
is a tiny program that emulates the detach feature of screen, allowing you to run a program in an environment that is protected from the controlling terminal and attach to it later.
Installation
Install
the
dtach
AUR
package.
Usage
Create a new session
To create a new session running
command
and attach to it:
$ dtach -c
socket
command
For example, to create a new session running
bash
with the socket located at
/tmp/bashsession
:
$ dtach -c /tmp/bashsession bash
To create a new session running
command
without attaching to it:
$ dtach -n
socket
command
Attach to a session
To attach to an existing session:
$ dtach -a
socket
To attach to an existing session, and if not already existing, create it:
$ dtach -A
socket
Detach from a session
In an attached session, type
Ctrl+\
. This key combination can be modified with the
-e
flag.
Tips and tricks
Share a session
To share a session with another user, simply
#Create a new session
and change the permissions on the socket file such that the other user can read and write to it. Then the other user should be able to
attach
to the session.
Dynamic disks

Dynamic disks
, enabled by the
Logical Disk Manager
(LDM), is a technology for Microsoft Windows that is similar to
LVM
and
mdadm
.
General consideration for Linux usage
In general it is not recommended to convert the disk drive to host your Linux into a dynamic disk. This is because:
In a dynamic disk, an entire disk is put in a one, big partition. (More precisely, a GPT dynamic disk will have one big partition for data and the other, one small metadata partition. An MBR dynamic disk has a sole partition. See
How Dynamic Disks and Volumes Work
in microsoft.com.)
To turn a disk to a dynamic disk, all existing partitions have to be recognized by Windows - Linux partitions (ext4, btrfs, lvm, you name it)  are out!
Probably the sole case you want to use dynamic disks is when you use RAID in Windows.
Dynamic disks cannot be used on removable disks, either.
Usual course
LVM
and
mdadm
are the preferred tools under Arch Linux.  However, if the system is being dual-booted with Windows, Windows will not be able to read these setups.  The usual course then is to attempt to use
fakeraid
using
dmraid
or to use network storage.  However, network storage retrieval will be capped to 1Gb/s (119MiB/s) and getting RAID drivers loaded on an existing Windows installation can be daunting (if not impossible) if the Windows OS partition is installed on a drive that is on the very controller that you want to switch from AHCI to RAID.  Even if you have a spare AHCI controller card, your system may not have enough space to hold two Option ROMs.
Terminology
Read "spanned volume" of a dynamic disk as a "logical volume" in Linux LVM, and "striped volume" as RAID0.
Installing support for dynamic disks
Note
This tool will only give you the ability to read and write dynamic disks in Arch Linux.  For all other tasks, you will have to use Windows' Logical Disk Manager.
Install the
libldm
package.  Once installed,
ldmtool
can be used to query and mount dynamic disks.
Mandatory preparation
To create device mappers, simply do:
# ldmtool create all
This populates
/dev/mapper
with volumes under LDM. Once this is done, they become accessible in a usual manner, say by:
# mount -t ntfs /dev/mapper/
LDM volume
/mnt/
mountpoint
Other commands
To find all disk groups:
# ldmtool scan
To find what volumes a disk group contains:
# ldmtool show diskgroup
diskgroup UUID
To create individual device mappers:
# ldmtool create volume
volume name
To create device mappers for all volumes in a disk group:
# ldmtool create volume
diskgroup UUID
systemd
To get dynamic disks to behave like filesystems natively supported by the Linux kernel,
enable
ldmtool.service
.
Once this setup is complete, you can add entries to
/etc/fstab
that reference dynamic disk volumes and have those mounted like any other volume.
See also
Basic and Dynamic Disks
(Microsoft site)
Working with Basic and Dynamic Disks
(Microsoft site)
wikipedia:Dynamic disk
Dynamic Kernel Module Support

From
Wikipedia
:
Dynamic Kernel Module Support (DKMS) is a program/framework that enables generating Linux kernel modules whose sources generally reside outside the kernel source tree. The concept is to have DKMS modules automatically rebuilt when a new kernel is installed.
This means that a user does not have to wait for a company, project, or package maintainer to release a new version of the module. Since the introduction of
pacman hooks
, the rebuild of the modules is handled automatically when a kernel is upgraded.
Installation
Install
the
dkms
package
and
the
headers
for the target kernel(s)—for example, for the default
linux
kernel this would be
linux-headers
; other kernels have their own respective headers packages.
A good number of modules that lie
outside
the kernel source tree have a DKMS variant; a few are hosted in the
official repositories
, most are found in the
AUR
.
Note
The modules built by DKMS will fail to load if the kernel
enforces
loading only  signed modules, e.g. when using
kernel lockdown
.
Upgrades
Though the rebuild of the DKMS modules is usually seamless during a kernel upgrade, it may still happen that the rebuild fails. You should pay extra attention to the
pacman
output. This applies in particular if the system relies on the DKMS module to boot successfully and/or if you use DKMS with a custom kernel not in the
official repositories
.
To deal with changes in the kernel, fix bugs, or add necessary features consider upgrading the DKMS package before rebooting.
Usage
Usage for invoking DKMS manually.
Tab-completion is available by doing:
# source /usr/share/bash-completion/completions/dkms
List modules
To list the current status of modules, versions and kernels within the tree:
# dkms status
Rebuild modules
Rebuild all modules for the currently running kernel:
# dkms autoinstall
or for a specific kernel:
# dkms autoinstall -k 3.16.4-1-ARCH
To build a
specific
module for the currently running kernel:
# dkms install -m nvidia -v 334.21
or simply:
# dkms install nvidia/334.21
To build a module for
all
kernels:
# dkms install nvidia/334.21 --all
Remove modules
To remove a module (old ones are not automatically removed):
# dkms remove -m nvidia -v 331.49 --all
or simply:
# dkms remove nvidia/331.49 --all
If the package
dkms
is removed the information regarding previous module build files is lost. If this is the case, go through
/usr/lib/modules/
kernel_release
and
/var/lib/dkms/
package_name
and delete all files and directories no longer in use.
DKMS package creation
See
DKMS package guidelines
.
See also
Linux Journal: Exploring Dynamic Kernel Module Support
echinus

Warning
echinus is not maintained anymore. See the README in the
repository
.
Related articles
dmenu
Window manager
echinus
is a simple and lightweight tiling and floating window manager for X11. Started as a
dwm
fork with easier configuration, echinus became a full-featured reparenting window manager with
EWMH
support.
Unlike dwm, echinus does not need to be re-compiled after changes have been made to the config. It supports
Xft
(freetype) out of the box and has the option of configurable titlebars.
Installing
Install
echinus
AUR
. You might also want to install
ourico
AUR
, a lightweight EWMH taskbar, originally designed for echinus, and
dmenu
.
After successfully installing, copy all files from
/etc/xdg/echinus
to
~/.echinus
(for user).
Configuring
echinus is configured in one simple text file, in Xresources format:
~/.echinus/echinusrc
. Details for all of the configuration options are in
/usr/share/doc/echinus/README
. A section of a sample configuration file looks like:
Echinus*selected.border: #404040
Echinus*selected.button: #d3d7cf
Echinus*selected.bg: #262626
Echinus*selected.fg: #d3d7cf
Rules
Rules can be set up to spawn applications in specific tags. The following rule, for example, would open firefox in the "web" tag:
Echinus*rule0: firefox.* web 0 1
Opening applications in a terminal requires that you explicitly set the -title tag when spawning them so that echinus can manage them:
Echinus*spawn0: CA + m = urxvtc -title mutt -e mutt
Similarly, when spawning
dmenu
, you will need to declare the requisite properties, like so:
Echinus*spawn1: Menu = dmenu_run -fn "-*-dina-medium-r-*-*-*-100-*-*-*-*-*-*" -nb "#1A1A1A" -nf "#696969" -sb "#1A1A1A" -sf "#D3D7Cf"
Starting echinus
To start echinus with
startx
or the
SLiM
login manager, simply append the following to
~/.xinitrc
:
exec echinus
Using echinus
After making changes to
echinusrc
, you can reload the configuration without recompiling by restarting echinus, with
Alt+Shift+q
. This keybinding, and any other, can be customized to suit your preference or muscle-memory.
Further details for manipulating windows are in the manpage and the
README
.
Panels & Pagers
echinus supports some parts of EWMH - the following are known to work:
tint2
fbpanel
ipager
[
dead link
2025-03-15—HTTP 404]
ourico
AUR
See also
echinus website
GitHub repository
Screenshots
https://www.flickr.com/photos/jasonwryan/5270660692/lightbox/
http://plhk.ru/gallery/echinus-0.4.6.png
http://plhk.ru/gallery/profont.png
http://plhk.ru/gallery/echinus027.png
Elasticsearch

From
Wikipedia:Elasticsearch
:
Elasticsearch
is a search engine based on
Lucene
. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License.
Installation
Elasticsearch now requires
jre-openjdk-headless
, see
Java
.
Install
the
elasticsearch
AUR
package.
Running
If you do not have a keystore at
/usr/share/elasticsearch/config/elasticsearch.keystore
, you need to create one before starting Elasticsearch:
# elasticsearch-keystore create
Afterwards, you can
start/enable
elasticsearch.service
.
Ensure Elasticsearch is running and accessible by using
curl
,
curl '<protocol>://<host>:<port>'
:
curl
http://127.0.0.1:9200
{
  "name" : "Sunder",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "*cluster-uuid*",
  "version" : {
    "number" : "2.4.1",
    "build_hash" : "c67dc32e24162035d18d6fe1e952c4cbcbe79d16",
    "build_timestamp" : "2016-09-27T18:57:55Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}
Configuration
The main Elasticsearch configuration file is well-documented and located at
/etc/elasticsearch/elasticsearch.yml
.
By default Elasticsearch is public accessible, it may be preferred to allow only access on the host instead:
network.host: 127.0.0.1
It is possible to use a custom port instead of the default
9200
:
http.port: 9200
Warning
elasticsearch.service can be terminated because of memory overuse: "A process of this unit has been killed by the OOM killer."
You may want to change the default initial and maximum allowed memory usage
[1]
:
/etc/elasticsearch/jvm.options.d/.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms2g # e.g. 256m, 512m, 1g, 2g, ..
-Xmx2g # e.g. 256m, 512m, 1g, 2g, ..
Reduce from 4g to 2g if you get the Linux Out-Of-Memory error.
You might need to update the
vm.max_map_count
system limit:
# sysctl -w vm.max_map_count=262144
Note
Installing
elasticsearch
AUR
provides already an increased
vm.max_map_count
as in
/usr/lib/sysctl.d/elasticsearch.conf
.
Usage
Elasticsearch uses a REST API, see
Wikipedia:RESTful API
for more information.
The
quick start
section of the
Elasticsearch guide
should provide you with basic and detailed usage information.
The Elasticsearch server management (document maintenance, performing search, etc.) is usually done by
clients
, that should provide a seamless integration with the preferred programming language.
Useful tools to manage ElasticSearch instances and clusters like
ElasticHQ
,
Elasticsearch GUI
,
Kibana
and
Adminer
are also available to simplify management.
Basic Security
Security is enabled and configured by default in Elasticsearch 8.0 and later.
Elasticsearch provides
documentation
to set up the mandatory basic security feature.
Elgato EyeTV DTT Deluxe v2

Also called Elgato EyeTV DTT Deluxe 2009, it is a DVB-T USB device from Elgato intended for use with
Apple Computer
based systems.
Installation
Install
linuxtv-dvb-apps
AUR
.
Download the firmware and copy the files to
/usr/lib/firmware
$ wget
https://kernellabs.com/firmware/as102/as102_data1_st.hex
[
dead link
2024-07-30—HTTP 404]
$ wget
https://kernellabs.com/firmware/as102/as102_data2_st.hex
[
dead link
2024-07-30—HTTP 404]
# mv as102_data* /usr/lib/firmware 
# chmod 644 /usr/lib/firmware/as102_data*
Now you can plug it in and you are ready to go.
Use
When plugged, you should see the following:
# dmesg
[  484.336751] usb 2-1: new high-speed USB device number 5 using ehci_hcd
[  484.804400] dvb_as102: module is from the staging directory, the quality is unknown, you have been warned.
[  484.804853] as10x_usb: device has been detected
[  484.804865] DVB: registering new adapter (Elgato EyeTV DTT Deluxe)
[  484.805121] DVB: registering adapter 0 frontend 0 (Elgato EyeTV DTT Deluxe)...
[  484.964484] as10x_usb: fimrware: as102_data1_st.hex loaded with success
[  485.199985] as10x_usb: fimrware: as102_data2_st.hex loaded with success
[  485.200015] usbcore: registered new interface driver Abilis Systems as10x usb driver
More info on DVB-T can be found on the
DVB-S
page.
A common use can be
installing
the
vlc
package, then doing the following:
$ scan /usr/share/dvb/dvb-t/de-Nordrhein-Westfalen | tee channels.conf
$ vlc channels.conf
See also
https://www.kernellabs.com/blog/?p=1378
[
dead link
2024-07-30—HTTP 404]
https://linuxtv.org/wiki/index.php/Elgato_EyeTV_DTT_deluxe_v2
Elixir

Related articles
List of programming languages
Elixir
is a dynamic, functional language designed for building scalable and maintainable applications. It leverages the
Erlang
virtual machine (
BEAM
), known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
Installation
Single version
Install
the
elixir
package. It includes
Erlang
, which is needed to run Elixir. The
Mix
package manager comes pre-installed with Elixir.
Multiple versions
If you want to run multiple versions of Elixir and/or Erlang, these tools help with installing and managing multiple Elixir/Erlang versions:
asdf
— Elixir and Erlang,
exenv
— Elixir only,
kerl
— Erlang only,
kiex
— Elixir only.
Configuration
Be sure to have Elixir's bin path in your
PATH
environment variable
to ease development.
Single version
/usr/bin
Multiple versions
Please refer to the tool you used to install Elixir
In both cases, you need to find your
shell profile file
, and then add to the end of this file the following line reflecting the path to your Elixir installation:
export PATH="$PATH:/path/to/elixir/bin"
See also
Gleam
ePSXe

ePSXe
(enhanced PSX emulator) is a PlayStation emulator for x86-based PC hardware with Microsoft Windows or Linux, as well as devices running Android. It was written by three authors, using the aliases
Calb
,
_Demo_
and
Galtor
. ePSXe is closed source with the exception of the application programming interface (API) for its plug-ins.
Installation
Warning
The installation and use of this emulator requires a Sony PlayStation BIOS file. In most jurisdictions, you may not use such a file to play games in a PSX emulator if you do not own a Sony PlayStation, Sony PSOne or Sony PlayStation 2 console as it is a violation of copyright law.
Install
epsxe
AUR
, along with any
plugins
. Also, you should have a legally obtained BIOS file handy and place them in
~/.epsxe/bios
.
Add yourself to the
games
user group
. If the group does not exist,
create it
first.
Configuration
Configure video and sound by going to
Config > Video
and
Config > Sound
respectively, and configuring the plugins you want. Verify that they are working by clicking the Test buttons in each of the windows.
The CD-ROM path should be set by default. You can check it by going to
Config > Cdrom
.
Set up the controls for player one by going to
Config > Game Pad > Port 1 > Pad 1
.
Playing
Run a game from your CD-ROM by clicking
File > Run CDROM
.
Load up a game from an ISO by clicking
File > Run ISO
.
You can manipulate game states by going to
Run > Save State (F1)
and
Run > Load State (F3)
, or using the hotkeys
F1
and
F3
.
Troubleshooting
Sound device not found
If the sound plugin does not work and you are using
ALSA
, see
Advanced Linux Sound Architecture#OSS emulation
.
See also
ePSXe -
https://www.epsxe.com/
Pete's PSX plugins -
http://www.pbernert.com/index.htm
Erlang

Related articles
Elixir
List of programming languages
Erlang
is a programming language with the specific qualities of immutable data and distributed computing.
Installation
Install
the
erlang
package.
Usage
For further documentation you can read Erlang's
docs
.
To activate the console, run:
$ erl
Commands can be entered like this:
Erlang/OTP 22 [erts-10.7.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.7.2  (abort with ^G)
1> 1 + 2 .
3
2> (2 + 3) * 4 / 5 .
4.0
3>
Tips and tricks
Emacs mode
To set up the included
Emacs
mode,
erlang-mode
, follow the
documentation
(the OTP path is
/usr/lib/erlang
).
See also
Gleam
Ethereum

The
Ethereum Project
provides an open-source, distributed, blockchain-based platform for so-called
smart contracts
.
Clients
This article or section needs expansion.
Reason:
Note several implementations exist in non-/AUR packages, configuration, tips, troubleshooting etc. (Discuss in
Talk:Ethereum
)
Go Ethereum
Go Ethereum
, the official Go implementation of the Ethereum protocol, is available as the
go-ethereum
package.
Create an account with
geth account new
.
The client can be started with
geth
, and it will proceed to download several gigabytes of blockchain data. This will take a very long time. This time can be shortened with
$ geth --syncmode full --cache=1024
Higher cache values appear to speed up the process more
[1]
.
Optionally, start the client with
geth console
to get a JavaScript console for more meaningful interaction.
This console can then be attached-to from another terminal or remotely with
geth attach [hostname:port defaults to localhost]
.
To check balances in the console or attach modes, use
web3.fromWei(eth.getBalance(eth.coinbase), "ether")
.
To start CPU mining, use
geth --mine
.  This is far less efficient than GPU mining, and ethereum.org does not recommend it.
GPU Mining with geth
This article or section needs expansion.
Reason:
There is a way to make a 3rd party Ethereum miner work with geth. (Discuss in
Talk:Ethereum
)
GPU mining with geth has been discontinued.
Ethereum Wallet
You can
install
the Ethereum Wallet via the
mycrypto-bin
AUR
package.
Etherpad-lite

Related articles
Gobby
Etherpad-Lite
or just Etherpad, is a collaborative, multi-user web-editor based on
Node.js
with the ability to import/export various office file formats.
Installation
Install
the
etherpad-lite
AUR
package.
Configuration
Database
For testing purposes, the default database backend for Etherpad is the file-based DirtyDB. With that, you can run and test Etherpad-Lite without any further configuration.
If you want to use
MySQL
,
PostgreSQL
or
SQLite
, you can adjust those settings in the settings.json file. Further, you can set a password for the administrator interface on
http://localhost:9001/admin
, change port and listening address, etc.
At least, do not forget to set a sessionkey, e.g. generate with
pwgen
and
pwgen --symbols 10 1
and write it down to
/etc/etherpad-lite/SESSIONKEY.txt
.
Your Etherpad installation can be extended with plugins listed at the administrator interface.
Address
the default IP is
0.0.0.0
, change it to 127.0.0.1 as assumed later.
/etc/etherpad-lite/settings.json
// IP and port which etherpad should bind at
  "ip": "127.0.0.1",
  "port" : 9001,
Starting
Enable
the
etherpad-lite.service
unit. You can then access Etherpad-Lite on
http://127.0.0.1:9001
or directly access a pad on
http://127.0.0.1:9001/p/padname
Known issues
Crashes on some Pads
https://github.com/ether/etherpad-lite/issues/2516#issuecomment-79659984
See also
Official Etherpad website
Development page on GitHub
Eureka

From
Eureka
's README:
Eureka is a CLI tool that allows you to quickly write down an idea using your preferred editor, and then have the idea committed and pushed to your idea git repository.
Note
Eureka upstream repository has not had any activity for over a year, and attempts to contact the developer has failed. Most likely this package will never be updated, however it still builds and functions as expected.
Installation
Install
the
eureka-notes
AUR
package.
Configuration
Eureka does not currently support any sort of complex configuration. However generates its own configuration when you first execute eureka.
When you first execute eureka, it will ask you to enter the full path to the repository you would like to use, this is a git repository containing a README.md file. For this setup we will store the eureka data within the home directory of the user you are logged in as.
Firstly, ensure you are in your home directory.
$ cd
Then create the eureka directory, and enter it.
$ mkdir eureka && cd eureka
Then initialise a new git repository within the eureka directory.
$ git init
Then create the
README.md
file in which the notes will be stored.
$ touch README.md
Note
If you do not create the README.md file, eureka will fail when attempting to load the directory.
Congratulations, you have created the eureka storage directory, now in order to keep these notes safe from loss of data, such as you dropping your laptop and losing all the data, eureka automatically pushes to the "origin" remote ever change you make to your notes, so we must add this remote.
Any git provider can be used, such as
Github
or
Gitlab
as long as you have read/write permissions to the repository you would like to use, once you have created the repository, copy the ssh link and copy it into the following command:
git remote add origin
ssh-url
- With your ssh url of the repository you would like to use
Finally, you are ready to start eureka, once executed eureka will ask for the full path to your repository, enter
/home/
user
/eureka
.
Eureka will automatically generated the configuration for you in json format, you can find the configuration file at
$HOME/.config/eureka/config.json
.
Troubleshooting
Cannot find binary path error
If you get the following error
ERROR eureka > cannot find binary path
, Eureka defaults to the vi editor when no EDITOR
environment variable
is set.
If you do not want to define the environment variable globally, you can always define it inline when executing eureka, below is an example with using eureka with neovim without any environment variable set:
$ EDITOR=nvim eureka
No such file or directory error
If you get the following error
ERROR eureka > No such file or directory (os error 2)
Eureka has attempted to look for the directory you defined on first startup, and could not find it, or the directory does not contain the
README.md
file which must be present for eureka to function.
Exaile

Exaile
is a music manager and player for GTK written in Python. It incorporates automatic fetching of album art, lyrics fetching, Last.fm scrobbling, support for many portable media players, internet radio such as shoutcast, and tabbed playlists.
Installation
Install
the
exaile
AUR
package.
If you use
ALSA
and want to use alsasink instead of the default one,
install
gstreamer0.10-base-plugins
AUR
. This may solve problem if no sound is heard after installation and also when trying to play several sources simultaneously.
Playing audio CDs
Exaile requires
python-cddb
to play audio CDs. The correct package for this is
cddb-py
AUR
.
Enabling multimedia keys irrespective of DE/WM
First, run
xev
and retrieve the keycodes for the Previous, Next, Play, Stop, and Mute keys. Then create a textfile and add lines in the following format:
keycode 173 = XF86AudioPrev
. Replace the keycode (173) with your own keycode for the Previous key. Repeat the process for the other keys, substituting 'Prev' for 'Next', 'Play', 'Stop', and 'Mute'.
Then edit
~/.xinitrc
and add the line
xmodmap <file name>
prior to the 'exec' command (if there is one) for the DE/WM, where <file name> is the path to the text file created above.
Finally, in Exaile, go to
Edit > Preferences > Plugins
, and enable the XKeys plugin. After a restart, multimedia keys should work.
Troubleshooting
Progress bar stuck at 0:00
First, make sure there are no problems with your sound architecture (
ALSA
,
OSS
, etc.). And your
playback sink
in Exaile is set correctly. Try setting it to automatic first.
If you are trying to listen to an MP3 file, try playing an audio file encoded in a different format, such as
.ogg
or
.flac
.
"Playback error encountered! Configured audiosink bin0 is not working"
If you are getting a message like this, or "Configured audiosink bin1 is not working" (or with another number after 'bin'), it may be because Flash is blocking the use of ALSA by Exaile. You can fix this by running
$ killall npviewer.bin
In certain cases (such as if a YouTube video has finished playing), Flash may be blocking the use of ALSA even if an 'npviewer.bin' process is not running. In that case, refreshing the offending page while using a Flash blocking browser extension should fix the problem.
"Last.fm Loved Tracks" plugin not working
When launched from console, Exaile emits a warning in the command line:
WARNING : Error while connecting to Last.fm network: 'module' object has no attribute 'LastFMNetwork'
You need to install the
python-pylast
.
"Playback error encountered! No suitable plugins found"
Install all plugin packages listed in the
GStreamer
article and try again.
Known issues
Playing from SMB share
Unfortunately, Exaile does
not
support smb protocol.
Faction

Faction
is a C library for test-driven software development.
Installation
Install
the
libfaction
AUR
package.
Usage
The library provides several C macros to make writing tests quicker.
FI represents Faction Initialization
FT denotes a Faction Test
FC represents Faction Close
Using the FT macro, three fields are required.
AUTHORS() takes a comma-separated list of double-quotation surrounded author names
SPEC() takes a single double-quotation surrounded test specification description
A C boolean expression (just like when using C assert macros)
Convention dictates that Faction tests are to be written at the bottom of the source file containing the code that will be tested. Tests are to be surrounded by a FACTION macro guard (see below example) so that they can be enabled/disabled at compile time. C compilers such as the GNU C Compiler (GCC) offer a way to enable macros on the command-line (i.e. the
-D
flag)
Example
/* This is the function to be tested */
int
increment(int input)
{
   return (input + 1);
}

#ifdef FACTION
#include <faction.h>
#include <limits.h>
FI

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 1 when given 0" ),
    increment(0) == 1
  );

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 0 when given the largest integer value" ),
    increment(INT_MAX) == 0
  );

FC
#endif
This can be compiled using
gcc
filename.c
-D FACTION
Modes
There are two modes that Faction can compile in:
minimal
mode and
extended
mode.
The above example compiles Faction in minimal mode. A minimal compilation has exactly three library dependencies: stdlib, stdio, and getopt. An extended compilation has additional dependencies, including some functions that are only available through the GNU feature test macro.
So, to compile in extended mode, simply define the GNU feature test macro at the top of the file. For instance, the previous example modified to be compiled in extended mode would look like this:
#ifdef FACTION
#define _GNU_SOURCE
#endif
/* This is the function to be tested */
increment(int input)
{
  return (input + 1);
}

#ifdef FACTION
#include <faction.h>
#include <limits.h>
FI

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 1 when given 0" ),
    increment(0) == 1
  );

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 0 when given the largest integer value" ),
    increment(INT_MAX) == 0
  );

FC
#endif
Extended Mode Features
In extended mode,
the output can be optionally mirrored to a user-specified log file using the
-l
flag at runtime.
the results table will dynamically resize to the width of the terminal being used. Otherwise, it defaults to a 78 character width.
See also
Faction homepage
fbpanel

fbpanel
is a lightweight
NETWM
compliant desktop panel.
Installing
Install
the
fbpanel
AUR
package.
Starting
If you want to start fbpanel with your X session, add the following line to your
~/.xinitrc
before the line where you start your window manager:
fbpanel &
Configuration
You can find the configuration file in
~/.config/fbpanel
. If it does not exist, copy over the default configuration file:
$ mkdir ~/.config/fbpanel
$ cp /usr/share/fbpanel/default ~/.config/fbpanel
wincmd plugin (show desktop button)
This plugin is enabled by default, but it might not show up because it cannot find an existing icon. In that case, change the icon path to one that points to an existing icon. You can also use an image as its icon. In that case, replace the
icon
key with
image
:
Plugin {
    type = wincmd
    config {
        image = ~/images/my_image.png
        tooltip = Left click to iconify all windows. Middle click to shade them.
    }
}
FHEM

FHEM
(TM) is a GPL'd perl server for house automation. It is used to automate some common tasks in the household like switching lamps / shutters / heating / etc. and to log events like temperature / humidity / power consumption.
Installation
Install the
fhem
AUR
package.
Configuration
Since version 5.7, the FHEM package uses a different directory layout for its files:
/usr/share/fhem
Perl modules and static content
/var/lib/fhem
logs and state files, changing content
/etc/fhem.cfg
main configuration file
If you have a legacy configuration, please adjust your paths by putting these lines into
/etc/fhem.cfg
If you like to edit the configuration from the web frontend, make sure the user
fhem
has write access to
/etc/fhem.cfg
.
/etc/fhem.cfg
attr global logfile /var/lib/fhem/fhem-%Y-%m.log
attr global modpath /usr/share/fhem
attr global statefile /var/lib/fhem/fhem.save

[...]

define Logfile FileLog /var/lib/fhem/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate filelog /var/lib/fhem/%NAME-%Y.log

define eventTypes eventTypes /var/lib/fhem/eventTypes.txt
Please visit the
FHEM reference documentation
for further information.
Startup
Just
start/enable
fhem.service
.