hannah-eee/arch-wiki-docs huggingface dataset:
Macvtap

Related articles
Network bridge
Libvirt#Networking
A
macvtap
device is a newer device driver that enables
Network bridge
-like networking, but with a much simpler set up process. This is most useful for virtualization. For most purposes, the only disadvantage compared to a network bridge is that the host will not be able to communicate with the guests via this network.
Setting up a macvtap network
Create a macvtap interface
macvtap0
that is bridged to
eth0
with these commands:
# ip link add link eth0 name macvtap0 type macvtap
# ip link set macvtap0 up
Troubleshooting
Guest virtual machine can reach outside network, but cannot reach host
See
[1]
for solution.
See also
Linux Virtualization Wiki entry on macvtap
Mailnag

mailnag is a Wayland e-mail notification daemon. It integrates well with
mako
and
libnotify
and comes with interactive configuration tooling, making setup very straight-forward.
Installation
mailnag
can be
installed
with the
mailnag
package.
Note
You may also want to install
gnome-keyring
to satisfy the needed
org.freedesktop.secrets
service file.
Configuration
Run
mailnag-config
to create an initial configuration at
~/.config/mailnag/mailnag.cfg
.
Usage
Users can run
mailnag
from within a shell while running a
Wayland
or
Xorg
session, given that a notification daemon is running.
Note
mailnag
needs to be able to access a valid
dbus
session to communicate with a notification back-end.
Autostart
mailnag
supports
XDG Autostart
out of the box. A
systemd user service
example has been included below as another option.
systemd user unit
Users will probably want to run
mailnag
in a systemd unit. Provided below is an example user unit where
user id
is the numeric ID of the user where this service is installed.
~/.config/system/user/mailnag.service
[Unit]
Description=Mailnag notification service

[Service]
ExecStart=/usr/bin/mailnag

[Install]
WantedBy=default.target
Then
start
mailnag.service
.
XDG
The
mailnag
package provides a
/usr/share/applications/mailnag.desktop
file for use with
XDG Autostart
that is supported by various desktop environments.
See also
GitHub project
Changelog
Main page (Qhichwa)

ArchWikimanmi
yaykuykamullay: llikapi Arch Linuxmanta qillqata tarinapaq k'itim.
Artikulumanta pata-pata qillqata rikunapaq
rak'i sutikunamanta mast'akuta
watukamuy.
Rak'iy kaq
Arch Linux
Arch Linuxpa qullanankunallamanta qillasqam, kaytaq Arch Linux sistimamanta imayna kasqanmanta yuyaychakunapaq.
Tiyachiymanta yachakuy
Arch Linux ukhunay thatkichiymanta pusaq.
Aswan tapukusqa tapukuna
Rak'iymanta aswan tapusqa tapukuna, chiqa willakukuna ima.
Tukuy yachanankupaq kunaykuna
Ukhunay qhipa yachachiykunamanta, wak riqsisqa qillqasqakunamanta t'uksiycha ripana qillqay ima.
Archta wak rak'iykunawan tinkunachiynin
Archpa hina llamnk'aynin, wakhina llamk'aynin ima wak rak'iykunawan tinkunachispa.
Aplikasyun ñisqakunamanta qillqa
Tukuypa yachasqan chiqan, AUR mayt'ukanamanta ima pata patachasqa riqsichiy.
Ayllunchik
Chiqan llamk'anapaq kamachikuna
Arch aylllumanta kaqkunapaq kay kamachikunawan llamk'anankupaq.
Tiqsimuyu ayllukuna
Tiqsimuyupi Arch linuxmanta ayllukuna
Aylluta yanapay
imaymana hamukunapi ayllunchikta yanapanayki kachkan.
Arch IRC pukyukuna
Arch llamk'achikuqmasiykikunawan qillqanakunaykipaq tantakuy.
Wikipi ruwanakuna
Imanatataq wikita qillqañawirisuman
Ñawiykipaq sasa kan chayqa sut'ichayninta taiy.
Wikipi mask'ay
K'itip patanpi tarikuq mask'ana tikapi qillqaspa mask'arikuy; kay tinkuchitapas chanaykipaq ñirquy.
Archwikipi artikulukunata ruwapayay
Wkipi artikulu ruwapayaymanta, qillqap sintaksisninkunamanta riqsichinapaq.
Wikita Qhichwa simiman hurqhuy
Inlis simipi Archwiki Qhichwa siminchikman hurqhuysiyta munanki chayqa kaypa patanpi tinkuchita ñit'iy.
Wikita chiqaykuy
Wikiman chiqaykuyta munanayki chayqa kayqa qallarinaykipaq.
MangoHud

Related articles
GameMode
MangoHud
is a
Vulkan
and
OpenGL
overlay for monitoring system performance while inside applications and to record metrics for
benchmarking
.
Installation
Install
mangohud
and
lib32-mangohud
since many old games are 32-bit-only.
Configuration
MangoHud is configured via the following files, which are read in the following order:
$XDG_CONFIG_HOME/MangoHud/MangoHud.conf
$XDG_CONFIG_HOME/MangoHud/APPLICATION-NAME.conf
(case-sensitive)
$XDG_CONFIG_HOME/MangoHud/wine-APPLICATION-NAME.conf
(for
Wine
applications, case-sensitive, without the
.exe
extension)
./MangoHud.conf
$MANGOHUD_CONFIGFILE
(via
environment variables
)
Tip
An example configuration file with comments can be found
in the project's repository
.
GUI for configuration
A GUI for configuring MangoHud can be installed from
goverlay
or
mangojuice
AUR
.
Usage
Keyboard commands
The default keyboard shortcuts include:
Keyboard shortcut
Description
Shift_R+F12
Toggle overlay (HUD)
Shift_R+F11
Toggle overlay (HUD) position
Shift_R+F10
Toggle preset
Shift_L+F1
Toggle FPS limit
Shift_L+F2
Toggle logging
Shift_L+F4
Reload configuration
Shift_L+F3
Upload log file
Shift_R+F9
Reset FPS metrics
Note
Keyboard shortcut values are transcribed as used in the
upstream's configuration file
.
Test configuration
Verify if the program has been setup correctly:
$ mangohud glxgears
$ mangohud vkcube
Run a single game
To run a game with MangoHud start it like this:
$ mangohud
game
Dynamic hooking for OpenGL applications
The
dlsym
hook is enabled by default for OpenGL applications. Set the
environment variable
MANGOHUD_DLSYM=0
to disable it in case of problems, like so:
$ MANGOHUD_DLSYM=0
game
Note
For Steam launch options, use the following instead:
MANGOHUD_DLSYM=0 %command%
Use with GameMode
To launch a game with both MangoHud and
GameMode
, chain the two commands into a single one, like this:
$ mangohud gamemoderun
game
Run a single Steam game
To make
Steam
start a game with MangoHud, right click the game in the
Library
, select
Properties...
, then in the
Launch Options
text box enter:
mangohud %command%
Run a single Steam game with GameMode enabled too
Same as for enabling
Steam
game to run with Mangohud but also with option to use it alongside GameMode
mangohud gamemoderun %command%
Run Steam with MangoHud
To avoid having to change launch options for all games, you may launch
Steam
directly with MangoHud:
$ mangohud steam
MangoHud will detect Steam and will avoid loading itself until a game is launched.
Enable for all Vulkan games
To make MangoHud automatically launch with all
Vulkan
games, it is possible to set the following
environment variable
:
MANGOHUD=1
Troubleshooting
MangoHUD does not work with native OpenGL Linux applications
Some Linux native OpenGL applications override
LD_PRELOAD
, preventing MangoHUD from loading. Sometimes, it's possible to edit the app's start script to include the path to MangoHUD's files, like so:
LD_PRELOAD=/usr/lib/mangohud/
MangoWM

Mango
is a modern, lightweight, high-performance tiling Wayland compositor built on
dwl
— crafted for speed, flexibility, and a customizable desktop experience.
Installation
Install
the
mangowm
AUR
package.
Alternatively
mangowm-wlonly-git
AUR
depends on
wlroots-git
AUR
which supports individual window capture but not scenefx.
Starting
Select
Mango
from the menu in a
display manager
or run
mango
from a
tty
.
LXQT
See
LXQt#Wayland Session
.
Configuration
The system-wide mango configuration file is
/etc/mango/config.conf
while user configuration is
~/.config/mango/config.conf
:
Creating the configuration file
First, run the following to create the directory needed in the next step:
$ mkdir -p ~/.config/mango/
Whenever started, mango will attempt to use whatever custom settings are contained in
~/.config/mango/config.conf
, then fall back to
/etc/mango/config.conf
. The user configuration file is not created by default, so copy the template file:
$ cp /etc/mango/config.conf ~/.config/mango/
Autostart
Add an
exec-once
command in
~/.config/mango/config.conf
file to execute a command at startup. For example:
exec-once=waybar
Using an
exec
command instead will ensure that the command is also run whenever mango is restarted.
Screen sharing
To setup
PipeWire
screen sharing
install
the
xdg-desktop-portal-wlr
package (or
xdg-desktop-portal-wlr-git
AUR
for
mangowm-wlonly-git
AUR
).
If the portal does not start automatically try autostarting
/usr/lib/xdg-desktop-portal-wlr
.
Troubleshooting
Fixing misbehaving Java applications
See
Java#Gray window, applications not resizing with WM, menus immediately closing
.
See also
bemenu
- A Wayland native alternative to
dmenu
.
An
introduction
to
mango
.
Mango
git
repository
.
Manim

Related articles
python
Manim is a library for animating technical concepts using the simplicity of python to generate animations programmatically.
It was originally created by Grant Sanderson (3Blue1Brown) and later forked by the community to create Manim Community Edition. Grant Sanderson's code is now called
manimgl
and the community's fork is now called
manim
or
manimce
.
More information can be found on the community editions
FAQs
.
Installation
Install
one of the following:
manim
AUR
python-manimgl
AUR
Note that the
manimce
PyPI package is out-of-date and unmaintained, and should
not
be installed.
Alternatively, you can use
pip
to install:
manim
manimgl
See
python#Package management
for more details.
Usage
Check out the following quickstarts based on the manim installed:
Manim
Manimgl
See also
Manim documentation
Manimgl documentation
Example Gallery
Mastodon

Related articles
Diaspora
Rbenv
Ruby
Mastodon
is a free, open-source social network, written in Ruby. A decentralized alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the social network seamlessly.
Server
Installation
Install
the
mastodon
AUR
package.
To set up Mastodon, follow the instructions printed by the
post_install
script. You can also find a copy of this on the
AUR web interface
.
Note
If you only want to join a Mastodon instance to post and read content, installing a client is enough. You do not need the
mastodon
AUR
package for that.
Clients
A list of Mastodon clients is also available in
the project's official website
.
Graphical
Tokodon
— Mastodon client for KDE.
https://apps.kde.org/tokodon
||
tokodon
Whalebird
— Whalebird is a Mastodon, Pleroma, and Misskey client with a Slack-like interface.
https://whalebird.social/en/desktop/contents
||
whalebird
AUR
TheDesk
— Mastodon/Misskey Client for PC.
https://thedesk.top/en
||
thedesk-client-bin
AUR
Tuba
— Another GTK Mastodon client forked from Tootle. Supports multiple accounts.
https://tuba.geopjr.dev/
||
tuba
Sengi
— Multi-account Mastodon and Pleroma desktop client.
https://nicolasconstant.github.io/sengi/
||
sengi-appimage
AUR
Command line
tut
— TUI for Mastodon with vim inspired keys
https://github.com/RasmusLindroth/tut
||
tut
AUR
toot
— Mastodon CLI and TUI
https://github.com/ihabunek/toot
||
toot
See also
@archlinux@fosstodon.org
, the official fediverse Arch Linux account
MathJax

MathJax
is a JavaScript display engine for mathematics that works in all browsers.
It is able to parse
TeX
input in html files to produce svg output, amongst other supported formats. The higher-level
Jupyter notebook
depends on MathJax and other modules for plotting, running interactive code, etc.
MathJax can easily be embedded on any website to typeset your TeX.
It is possible to quickly integrate MathJax with a distributed network service, see
here
for the currently available CDN.
This article assumes you want a hard copy of MathJax on your system.
Installation
Install
one of the following;
mathjax
- Version 3
mathjax2
- Version 2
Configuration
Local Usage
The scripts for MathJax are located in
/usr/share/mathjax
for both version 2 and 3. There are some differences in using the scripts between the versions. For version 3 there are a number of pre built components with different output results and functionality, click
here
for a list and explanation of the components.
To have MathJax parse the TeX code in
~/equations.html
and produce SVG output:
<head>
    ... 
    Version 2
    <script src="/usr/share/mathjax/MathJax.js?config=TeX-AMS_SVG"></script> 
    ...
    ... 
    Version 3
    <script src="/usr/share/mathjax/tex-mml-svg.js"></script>
    ...
</head>
Do not forget to include a configuration query string to tell MathJax about your desired i/o formats.
You can also configure MathJax inline, see
here
for more details and configuration options.
Your browser should now render the symbols at
file:///home/user/equations.html
.
Note that the TeX delimiters MathJax uses by default are
\( ... \)
for inline math and
\[ ... \]
,
$$ ... $$
for outline math.
Server Usage
In order to serve your clients with MathJax processed documents, you need your scripts to access its main file:
/usr/share/mathjax/tex-mml-chtml.js.js
(or
/usr/share/mathjax/MathJax.js
for version 2).
Let us assume the server's root directory is set to
/srv/http/
, creating symlinks will grant your scripts access to the installed package:
$ cp -rs /usr/share/mathjax /srv/http/mathjax
You can now have MathJax parse the TeX code in, say,
/srv/http/pages/equations.html
by including in its head:
<script src="../mathjax/tex-mml-chtml.js></script>
or for version 2:
<script src="../mathjax/MathJax.js?config=TeX-AMS_SVG"></script>
Troubleshooting
MathJax and Plotly
If you are using
plotly.js
as well, loading MathJax before Plotly might fail to render TeX code. Loading Plotly
before
MathJax should work. For example:
<head>
     <script src="path-to-plotly/plotly-latest.min.js"></script>
     <script src="path-to-mathjax/MathJax.js?config=TeX-AMS_SVG"></script>
</head>
You may also try different MathJax output.
TeX raw code visible while page is loading
It can happen that MathJax takes some time to typeset and raw TeX code appears during the while, producing an unpleasant result.
You can fix this by setting
visibility: hidden
in some element's
css
properties, and catch the event MathJax emits after typesetting is done to show it:
MathJax.Hub.Queue( function () { 
    document.getElementById("myID").visibility = "visible";
});
mbed TLS

According to
Wikipedia
:
mbed TLS
(previously
PolarSSL
) is an implementation of the TLS and SSL protocols and the respective cryptographic algorithms and support code required. It is dual-licensed with the Apache License version 2.0 (with GPLv2 also available). Stated on the website is that mbed TLS aims to be "easy to understand, use, integrate and expand".
Installation
Install
the
mbedtls
package.
Usage
The command names start with "mbedtls_", for usage examples see the
Knowledge Base
.
Generate an RSA private key
$ mbedtls_gen_key rsa_keysize=
keysize
filename=
filename
Generate a certificate signing request
$ mbedtls_cert_req filename=
private_key
subject_name=
subject
output_file=
filename
Relevant how-to
Generate a self-signed certificate
$ mbedtls_cert_write selfsign=1 issuer_key=
private_key
issuer_name=
subject
not_before=
YYYYMMDDHHMMSS
not_after=
YYYYMMDDHHMMSS
is_ca=1 max_pathlen=0 output_file=
file
Relevant how-to
See also
Official website
API documentation
Mbrola

mbrola
is a non-free
phonemes-to-audio
program to use with text-to-speech applications. It is free to use for non-commercial, non-military applications.
Installation
Install
the
mbrola
AUR
package.
Add voices
Packages named
mbrola-voices-xxx
are available in the
AUR
.
Testing
Once you have installed the wanted voice(s) go to the directory of the installed language:
$ cd /usr/share/mbrola/us1/
then list the test files:
$ ls test/
If there are no test files for this language, try with another language or skip to
#Install a text-to-phonemes program
.
Else choose a test file (files with
.pho
extension) and try:
$ mbrola ./us1 ./test/mbrola.pho ~/test.wav; aplay ~/test.wav; rm ~/test.wav
If the installation worked ok, you should hear the voice now.
Note that we this test did not give a text file to
mbrola
but a phoneme file. To make it a text-to-speech system, see below.
Install a text-to-phonemes program
To obtain a full TTS system we need a text-to-phonemes program compatible with mbrola:
List of TTS programs compatible with mbrola
.
Meld

Meld
— A visual diff and merge tool targeted at developers.
https://meldmerge.org/
||
meld
Description
Meld helps you compare files, directories, and version controlled projects. It provides two- and three-way comparison of both files and directories, and has support for many popular version control systems.
Meld helps you review code changes and understand patches. It might even help you to figure out what's going on in that merge you keep avoiding.
Installation
Arch
Install
the
meld
package for the stable version.
Or the
meld-git
AUR
for the latest commit version.
Flatpak
Also available as a Flatpak from
Flathub
.
Tip
If you have not already set up Flatpak,
install
the
flatpak
package.
You can install Meld with:
$ flatpak install flathub org.gnome.Meld
To run the Flatpak version:
$ flatpak run org.gnome.Meld
Warning
If you plan to use Meld as a git difftool, the native Arch package is recommended to simplify path resolution and integration.
Usage
Meld can be launched from the terminal or the application menu of your desktop environment.
You can interact with meld via terminal or GUI
Usage example
Comparing two files via terminal
$ meld file1.txt file2.txt
Comparing two files via GUI
New comparison > File > Choose file1.txt and file2.txt > Compare
Version Control Systems Integration
Meld integrates with many version control systems to let you review local changes and perform simple version control tasks.
Git configuration
Meld can be set as the default difftool and mergetool for
Git
.
Run the following commands to configure Git to use Meld:
git config --global diff.guitool meld
git config --global merge.tool meld
Or edit your
~/.gitconfig
manually:
~/.gitconfig
[diff]
    guitool = meld
[merge]
    tool = meld
SVN
Is possible to use Meld with
Subversion
.
Tip
Make sure
subversion
package installed on your machine.
Use command:
svn diff --diff-cmd meld nome_file
File Managers Integration
Nautilus
To add "Compare" options to the context menu in
Nautilus
, install the
nautilus-compare
AUR
package. Restart Nautilus for changes to take effect.
Thunar
In
Thunar
, you can set up a
custom action
.
Go to Edit > Configure custom actions.
Add a new action.
Command:
meld %F
Appearance conditions: Check "Directories" and "Text files".
Tips and tricks
Color Schemes
Meld supports syntax highlighting for a better visualization.
Specific color preferences can be changed inside Meld via the Preferences menu.
Troubleshooting
Missing Context Menu in Nautilus
If the context menu items do not appear after installing
nautilus-compare
AUR
, ensure you have restarted the file manager completely:
$ nautilus -q
Or try rebooting your machine.
See also
Official Documentation
FlatHub page
Memcached

Related articles
Redis
From
Wikipedia
:
Memcached (pronunciation: mem-cashed, mem-cash-dee) is a general-purpose distributed memory caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read.
The system uses a client–server architecture. The servers maintain a key–value associative array; the clients populate this array and query it by key. Keys are up to 250 bytes long and values can be at most 1 megabyte in size.
Clients use client-side libraries to contact the servers which, by default, expose their service at port 11211. Both TCP and UDP are supported. Each client knows all servers; the servers do not communicate with each other. If a client wishes to set or read the value corresponding to a certain key, the client's library first computes a hash of the key to determine which server to use. This gives a simple form of sharding and scalable shared-nothing architecture across the servers.
Installation
Install
the
memcached
package.
Configuration
Memcached defaults to listening only on TCP.
-l
allows you to bind to specific interfaces or IP addresses. By default, memcached listens for connections only on local network interfaces. It may be preferred to change the
-l
option to allow listening on external addresses instead. See
memcached(1)
.
Edit
memcached.service
to change the parameter.
Then
start
and/or
enable
memcached.service
.
Client-side software
C/C++:
libmemcached-awesome
Python:
python-binary-memcached
AUR
,
python-memcached
,
python-pylibmc
Perl:
perl-cache-memcached
Gambas:
gambas3-gb-memcached
See also
unix.stackexchange.com
Github wiki Configuring Server
Mercurial

Mercurial
(commonly referred to as
hg
) is a distributed version control system written in Python and is similar in many ways to
Git
,
Bazaar
and
Darcs
.
Installation
Install
the
mercurial
package.
Graphical front-ends
See also
Mercurial graphical user interfaces
.
hgk
— Tcl/Tk based tool to browse the history of a repository in a graphical way.
https://www.mercurial-scm.org/wiki/HgkExtension
||
mercurial
+
tk
TortoiseHg
— Set of graphical tools and a Nautilus extension for the Mercurial distributed revision control system.
https://tortoisehg.bitbucket.io/
||
tortoisehg
AUR
Configuration
At the minimum you should configure your username or mercurial will most likely give you an error when trying to commit. Do this by editing
~/.config/hg/hgrc
or
~/.hgrc
and adding the following:
~/.hgrc
[ui]
username = John Smith <johnsmith@domain.tld>
To use the graphical browser
hgk
aka.
hg view
, add the following to
~/.hgrc
(see
forum thread
):
~/.hgrc
[extensions]
hgk=
You will need to install
tk
before running
hg view
to avoid the rather cryptic error message:
/usr/bin/env: wish: No such file or directory
Usage
All mercurial commands are initiated with the
hg
prefix. To see a list of some of the common commands, run
$ hg help
Each command has a help page that can be read using
$ hg help
subcommand
You can either work with a pre-existing repository (collection of code or files), or create your own to share.
To work with a pre-existing repository, you must clone it to a directory of your choice:
$ mkdir mercurial
$ cd mercurial
$ hg clone
https://repo.mercurial-scm.org/hello
To create you own, change to the directory you wish to share and initiate a mercurial project
$ cd myfiles
$ hg init myfiles
Dotfiles Repository
This article or section is a candidate for merging with
Dotfiles
.
Notes:
Uses git, but the idea is the same. (Discuss in
Talk:Mercurial
)
If you intend on creating a repository of all your
~/.
files, you simply initiate the project in your home folder:
$ hg init
It is then just a case of adding the specific files you wish to track:
$ hg add |file1 file2 file3
You can then create a
~/.hgignore
to ensure that only the files you wish to include in the repository are tracked by mercurial.
Tip
If you include: syntax: glob at the top of the
.hgignore
file, you can easily exclude groups of files from your repository.
Tips and tricks
Progress bar
If you are going to be working with large repositories, you may want to enable the
progress
extension by adding it to your
~/.hgrc
file:
~/.hgrc
[extensions]
progress =
This will show progress bars on operations longer than 3 seconds.  If you would like the progress bar to show sooner, you can append the following to your configuration file:
~/.hgrc
[progress]
delay = 1.5
See also
Mercurial: The Definitive Guide
Mercurial Kick-Start
one more tutorial by Aragost.
Mercurial Hosting
- List of services that offer Mercurial hosting, from the official Mercurial wiki
Meta package and package group

A
meta package
and a
package group
can be defined by the
packager
to denote a set of related packages. Both can allow to install or uninstall this set of packages simultaneously by using the meta package or the group name as a substitute for each individual package name. While a group is not a package, it can be installed in a similar fashion to a package, see
pacman#Installing package groups
and
PKGBUILD#groups
.
Difference between meta package and package group
The difference between a meta package and a regular package is that a meta package is empty and exists purely to link related packages together via dependencies. A
meta package
, often (though not always) titled with the "-meta" suffix, provides similar functionality to a package group in that it enables multiple related packages to be installed or uninstalled simultaneously.
Each solution has advantages and disadvantages:
meta package
:
Meta packages can be installed just like any other package (see
pacman#Installing specific packages
).
Meta packages can be removed like any other package (see
pacman#Removing packages
).
Any new member packages will be installed when the meta package itself is updated with a new set of dependencies.
Users cannot choose which meta package dependencies they wish to install.
Users cannot remove meta package dependencies without having to uninstall the meta package itself.
group
:
Package groups will prompt users to select the packages from the group that they wish to install (see
pacman#Installing package groups
).
Users cannot uninstall a group, because they installed a list of packages. Instead,
pacman -R
groupname
tries to remove all members of the group.
New group members will not be automatically installed. Instead, the command
comm -23 <(pacman -Sg
package_group
| awk '{print $2}' | sort) <(pacman -Qq | sort)
can be run to show which members of a
package_group
are not installed on the system.
Users can choose which group members they wish to install.
Users can uninstall group members without having to remove the entire group.
Meta packages
The most important meta package is
base
. It contains a minimal package set that defines a basic Arch Linux installation. It includes:
basics such as
glibc
and
bash
,
distribution related things such as
pacman
and
systemd
,
POSIX tools such as
core utilities
, process, file and file compression utilities,
networking tools such as
iproute2
.
The
kernel
is an optional dependency. See the
announcement
when it was introduced, and
reasoning
why base is a meta package.
An other common meta package is
base-devel
. It contains a complete build environment for
makepkg
. See the
reasoning
why it has become a meta package.
Groups
Package groups are commonly used to facilitate the installation of
desktop environments
. See
Desktop environment#List of desktop environments
.
An other example is the
pro-audio
group for the
professional audio
software available in the
official repositories
.
See the
list of all package groups
.
micro

micro
is a terminal-based text editor that aims to be easy to use and intuitive, while taking advantage of the full capabilities of modern terminals. It is shipped as a single, static binary with no dependencies.
As the name suggests,
micro
aims to be a successor to the
nano
editor, as it is easy to install and use, but
micro
also strives to be pleasant to use on a daily basis.
Installation
Install
the
micro
package.
Configuration
Micro
uses
$MICRO_CONFIG_HOME
or
$XDG_CONFIG_HOME/micro
as its configuration directory. If these variables are not set, it defaults to
~/.config/micro
.
The main settings are defined in the
settings.json
file. You can find all available options
here
.
Tip
To display the main help file, press
Ctrl+g
.
Syntax highlighting
The colorscheme can be changed via the configuration file or from the
micro
command line. To do this, press
Ctrl+e
and type the command
set colorscheme [name]
Plugins
To install a plugin, use the command
plugin install [name]
inside
micro
. To remove one, use
plugin remove [name]
. The plugin help guide is available by running the command
help plugins
.
Tip
If you want to create a plugin, follow the instructions in the
official documentation
.
Tips and tricks
Replace vi with micro
To replace
vi
with
micro
as the default text editor for commands such as
visudo
, set the
VISUAL
and
EDITOR
environment variables
:
export VISUAL=micro
export EDITOR=micro
See also
micro homepage
Microsoft Edit

This article or section is a candidate for merging with
List of applications/Documents#Text editors
.
Notes:
No content. (Discuss in
Talk:Microsoft Edit
)
Microsoft Edit
(or msedit) is a simple text editor written in
Rust
and aims to small binary.
This editor pays homage to the classic
MS-DOS Editor
, but with a modern interface and input controls similar to VS Code. The goal is to provide an accessible editor that even users largely unfamiliar with terminals can easily use.
msedit
supports features including LF/CRLF conversions, i18n TUI, ability to make use of the mouse and
UTF-8
encoding.
Installation
Install
the
msedit
package.
The package provides
msedit
command.
Microsoft Surface Pro 9

This article or section does not follow the
Laptop page guidelines
.
Reason:
Stub, missing some IDs in the hardware table. (Discuss in
Talk:Microsoft Surface Pro 9
)
Hardware
PCI/USB ID
Working?
Touchpad
Yes
Keyboard
Yes
Touchscreen
Yes
Digitizer Pen
8086:51d0
Yes
GPU
8086:46a8
Yes
Webcam
No
Bluetooth
8087:0033
Yes
Audio
8086:9dc8
Yes
Wi-Fi
8086:51f0
Yes
Thunderbolt 4
8086:461f
Yes
8086:462f
Yes
TPM
Yes
This page aims to document specific information on getting Arch Linux working on the Microsoft Surface Pro 9 tablet with Intel Processor.
Installation
Hold
Volume Up
key on the tablet to enter UEFI setup utility. Disable
Secure Boot
, enable booting from the external USB devices, then boot from the installation media.
Since the Linux kernel does not ship required drivers to use the detachable keyboard, touchscreen and stylus, you have two options to control the operating system:
Plug in a USB keyboard into a free USB port and continue the installation process as usual.
Remaster the
Archiso
and include drivers and kernel from the
linux-surface
project.
Secure Boot
Note
Replacing  Microsoft's platform keys with your own (e.g. using
sbctl
) is safe and does not brick the laptop).
It is possible to set the tablet to use only user-provided keys in UEFI setup utility, but the default options allow only either using MS keys, or MS + 3rd Party CA, or disabling the Secure Boot.
The procedure of setting up the secure boot is as follows:
Disable Secure Boot
Follow
Secure Boot
for general setup until the key enrollment.
Make sure that enrolling keys is the last action you would do with the Secure Boot before shutting down the machine. In other words, for example, either
sbctl enroll-keys
(only 3rd Party CA only), or
sbctl enroll-keys -m
(MS + 3rd Party CA) commands must be entered before shutting down.
Shutdown the tablet. Do not reboot, do not reboot into the UEFI firmware setup directly.
Turn the tablet back on and hold "Volume Down" key.
Navigate to the "Security" section in the menu. If it says that it needs the reboot to access the settings, select the "Reboot to UEFI" option on the same page.
After the reboot, navigate to the "Security" section again. Verify that the Secure Boot is enabled automatically. If the text says "Secure Boot is Enabled with custom key configuration", then it means that UEFI enabled the hidden option to use only third-party CAs and keys automatically. Never select any other option there if you want to keep using your own keys.
Reboot to the operating system and verify that the Secure Boot is enabled. E.g.
sbctl status
should tell that the Secure Boot is enabled.
Minikube

Minikube
lets you quickly setup a local Kubernetes cluster. It supports the use of Virtual Machines, containers and even bare metal as its driver.
Installation
Install
minikube
or
minikube-git
AUR
for those that prefer the latest development version.
Usage
QEMU
To use minikube with QEMU, the following packages are required:
minikube
libvirt
qemu-desktop
dnsmasq
iptables
Additionally the current user needs to be in the
libvirt
user group
.
Start
the
libvirtd.service
unit and check its
unit status
for any issues.
Then set the kvm2 provider in minikube:
$ minikube config set driver kvm2
And start it:
$ minikube start
Rootless Docker
See
Docker#Rootless Docker daemon
for docker setup.
Configure
Internet sharing#Enable packet forwarding
to allow outbound network requests from pods.
Start minikube:
$ minikube start --driver=docker --container-runtime=containerd
Test network:
$ kubectl run -it --rm --restart=Never --image alpine tmp -- sh
> ping 1.1.1.1
> ping ping.archlinux.org
> ping host.minikube.internal
Rootless Podman
See
Podman#Rootless Podman
for rootless Podman setup.
Configure minikube
before
starting it:
$ minikube config set rootless true
$ minikube config set driver podman
$ minikube config set container-runtime cri-o
Start minikube:
$ minikube start
See also
Hello Minikube
– Kubernetes tutorial
miniserve

miniserve
is a small, self-contained cross-platform CLI tool that allows you to serve files and directories over HTTP.
Installation
Install
the
miniserve
package.
Usage
To serve a directory:
$ miniserve /srv/http
Refer to
miniserve --help
or
miniserve(1)
for additional options, such as custom index files, authentication,  interface binding, TLS, compressed folder download, and file upload capability.
Configuration
Temporary
miniserve does not use a configuration file. Instead, all options are passed via the CLI or set through environment variables. For example:
$ MINISERVE_VERBOSE=true MINISERVE_PORT=8081 miniserve --enable-webdav /srv/http
This enables verbose logging, changes the port from the default 8080 to 8081, and starts miniserve with read-only WebDAV support.
Permanent
A hardened systemd template unit file
miniserve@.service
is included with the package and can be customized via a
drop-in file
.
At first the path you wish to serve (e.g.
/srv/http
) must be escaped for a valid systemd unit name. Use
systemd-escape(1)
to format it correctly :
$ systemd-escape /srv/http
-srv-http
-srv-http
is your desired path, translated into a valid instance name for the systemd unit.
Use the escaped path as the instance name to configure miniserve with your desired settings:
/etc/systemd/system/miniserve@
-srv-http
.d/environment.conf
[Service]
Environment=MINISERVE_VERBOSE=true
Environment=MINISERVE_PORT=8087
You might additionally have to override
IPAddressAllow
and
IPAddressDeny
if you plan on making miniserve directly available on a public interface.
Start
and
enable
the unit with full instance name and inspect the
journal
.
Testing
Upon startup, miniserve reports the bound interface and a list of available IP addresses:
Bound to [::]:8080, 0.0.0.0:8080
Serving path /srv/http
Available at (non-exhaustive list):
   http://127.0.0.1:8080
   http://192.168.0.50:8080
   http://[::1]:8080
A health check is implemented and should return "OK":
$ curl http://127.0.0.1:8080/__miniserve_internal/healthcheck
Mnemosyne

Mnemosyne
is an open-source, cross-platform flashcard program that 
uses a
spaced repetition
algorithm for maximizing learning efficiency.
It is inspired by the proprietary
SuperMemo
and comparable to
Anki
, but with a stronger focus on a minimalist, distraction-free UI and simple but flexible work-flow.
Mnemosyne is written in Python 3 and uses the
Qt
toolkit.
Installation
Install
the
mnemosyne
AUR
package.
Configuring
Most of the options in Mnemosyne are available directly in the user interface. A few infrequently-used options are accessible through a configuration file located at
~/.config/mnemosyne/config.py
.
Size of mathematical formulae
If you would like to decrease the rendering resolution of mathematical formulae (default 200 dpi, which is rather large on most screens) to better fit with normal text, open the file
~/.config/mnemosyne/config.py
and decrease the number following the
-D
option in the line that looks like:
~/.config/mnemosyne/config.py
dvipng = "dvipng -D 200 -T tight tmp.dvi"
Other Resources
The Mnemosyne website offers:
Official
documentation
User-contributed
plugins
User-contributed sets of cards
See Also
Anki
- another open-source flashcard program using spaced repetition
Monitorix

Related articles
Anything-sync-daemon
lm_sensors
hddtemp
Monitorix
is an open source, lightweight system monitoring tool designed to monitor as many services and system resources as possible. It has been created to be used under production UNIX/Linux servers, but due to its simplicity and small size many use it on embedded devices as well.
Installation
Install
the package
monitorix
AUR
.
Note
Without a compatible font already installed, the Monitorix graphs will not contain any text. If this happens, install the
terminus-font
.
Configuration
Edit
/etc/monitorix/monitorix.conf
to match graphing options and system-specific variables.  For a complete list of options and features, see
monitorix.conf(5)
.
Most of the user settings are self explanatory based on the commented text within the configuration file itself.
Monitorix comes with a light, built-in webserver; via the dependency
perl-http-server-simple
. It is, however, disabled by default. To use it, change the configuration option as follows:
/etc/monitorix/monitorix.conf
....
<httpd_builtin>

enabled = y
....
See the configuration file for the other related options, for example
access restrictions
, or
#Configure an external webserver
.
Start and viewing data
Start/enable
monitorix.service
.
To view system stats, using the perl-http-server, simply point a browser to
http://localhost:8080/monitorix
to see the data.
Tip
If it is the first time running Monitorix, it will take several minutes before data are available to be displayed graphically; so be patient.
Configure an external webserver
Lighttpd
lighttpd
is another option.
By default, cgi support is not enabled in lighttpd.  To enable it and to assign perl to process
.cgi
files, add the following two lines to
/etc/lighttpd/lighttpd.conf
:
server.modules		= ( "mod_cgi" )
cgi.assign		= ( ".cgi" => "/usr/bin/perl" )
Apache
apache
is yet another option.
Nginx
nginx
can be used as a reverse proxy/webserver by adding the following server block the nginx config:
server {
    listen       80;
    server_name  your.domain.com;

    location / {
       proxy_pass http://127.0.0.1:8080;
       proxy_buffering off;
    }

    location ~ ^/monitorix/(.+\.(css|png))$ {
        alias /srv/http/monitorix/$1;
    }
}
Also add
url_prefix_proxy = http://your.domain.com
to
/etc/monitorix/monitorix.conf
.
Using tmpfs to Store RRD databases
anything-sync-daemon
is a package which provides a pseudo-daemon that makes use of tmpfs to store RRD Databases for Monitorix.  Doing so will greatly reduce hdd reads/writes.
Mono

Related articles
.NET
From
Wikipedia
:
Mono is a [...] project to create a
.NET Framework
-compatible set of tools including, among others, a
C#
compiler and a
Common Language Runtime
.
Installation
Install
the
mono
package.
If you need VisualBasic.Net support you have to
install
the VisualBasic.Net interpreter with the package
mono-basic
AUR
.
Note
Installing the package stores
certificate authorities
in
/usr/share/.mono/certs/Trust/
but removing the package does not remove them.
[1]
Running Mono applications
You can execute Mono binaries by calling
mono
manually:
$ mono programsname.exe
You can also execute Mono binaries directly, just like native binaries:
$ chmod 755 exefile.exe
$ ./exefile.exe
Testing Mono
Make a new file:
test.cs
using System;

public class Test {
 public static void Main(string[] args) {
  Console.WriteLine("Hello World!");
 }
}
Then run:
$ mcs test.cs
$ mono test.exe
Hello world!
Development
OmniSharp
provides .NET/Mono development plugins/integrations for several editors, including
Vim
,
Emacs
, and
Visual Studio Code
.
Alternatively, you can install the
rider
AUR
IDE. If you install Rider
not
from
AUR
, you would need to install
mono-msbuild
, as recent Rider versions
dropped support of xbuild
in favour of MSBuild from net-core.
If you want the API documentation browser and some testing and development tools you have to install
mono-tools
AUR
.
Troubleshooting
I get an error when I try to run Mono binaries directly: "cannot execute binary file"
The
binfmt_misc
handler for Mono has not yet been set up, as explained in detail on the
Mono Project website
.
To fix this,
restart
the
systemd-binfmt
service.
I get an TLS handshake (or similar certificate based) error
This can be caused by either certificates missing from Mono's certificate store, or stale broken certificates remaining in Mono's certificate store.
If possible, ensure that the system certificate store is in good order by running
curl -vI
or similar to replicate the failing request outside Mono.
cert-sync /etc/ssl/certs/ca-certificates.crt
synchronises the mono store with the system store, adding missing certificates.
To remove broken certificates (i.e., if above did not help), remove the directory
/usr/share/.mono
, then re-run
cert-sync /etc/ssl/certs/ca-certificates.crt
As last resort, the older tool
mozroots --import --ask-remove
bypasses the system certificate store and directly downloads Mozilla's trust store. This again does not remove broken certificates, and can cause other problems if you rely on private CAs.
Both
cert-sync
and
mozroots
are part of the mono package.
See also
Official Mono website
The Mono Handbook
The API reference of Mono
ECMA-334: C# Language Specification
ECMA-335: Common Language Infrastructure (CLI)
Instructions for running Mono applications
Mosh

Mosh
is an alternative interactive
SSH
terminal. It has support for roaming and local echo. It also aims to improve responsiveness on intermittent, and high latency connections. To achieve the aim, Mosh uses UDP on the transport layer with AES-128 OCB mode encryption for the session. It employs the
OpenSSH
dependency for the initial authentication of the session. Hence, Mosh can be used as an add-on for an existing OpenSSH configuration.
Installation
Note
Mosh must be installed on both the server and client.
Install
the
mosh
package.
The server and client can use different versions of Mosh, but some features are not available in older versions. For example, truecolor support requires that both the server and client use Mosh 1.4.0 or newer.
Usage
Note
Mosh by design does not let you access session history, consider installing a terminal multiplexer such as
tmux
or
GNU Screen
.
Mosh sessions by default use the first available UDP port in the 60001-60999 range, so it should be accessible in the server.
To connect, run:
$ mosh
user@server-address
To send ssh options for connecting:
$ mosh --ssh="ssh -p 2222"
user@server-address
You can make options permanent by using the usual
OpenSSH Client Configuration
.
Note
Mosh has an undocumented command line option
--predict=experimental
which produces more aggressive echoing of local keystrokes. Users interested in low-latency visual confirmation of keyboard input may prefer this prediction mode.
Movim

Movim
is a browser based XMPP client. Movim is designed to be easy to use, quick to get started
using their publically hosted instance
. Movim aims to be a powerful replacement to social media by providing blogging features, as well as being an XMPP client.
Movim is Free and Open Source Software licensed under
AGPL3
.
Installation
Install
the
movim
AUR
package.
This article or section is out of date.
Reason:
The movim AUR package is awaiting a rewrite to make it compatible with the latest versions. (Discuss in
Talk:Movim
)
Note
As Movim is a web based XMPP client, it requires a web server in order to function. Movim is not a XMPP server, you will need to have already created an XMPP account, see
XMPP Providers
for a list of public XMPP servers which you can register an account with.
Public instances
Mov.im
- Officially hosted instance of movim provided by the movim developers.
Configuration
Since 0.20, all configuration is done through
/etc/movim.env
.
Reverse proxy
Movim's development team has an amazing guide on setting up a reverse proxy for movim, please see
[1]
. The guide supports the following web servers:
nginx
apache
caddy
Known issues
Images are not OMEMO encrypted
Movim does not currently support encryption of HTTP uploads, thus images and other media posted will not be encrypted using OMEMO. This is not to say that they are still not secure, as TLS encryption will still be in use. This feature is being worked on but has no tracking issue to follow its progression.
Troubleshooting
Messages are "gibberish"
If the message is red, and it seems to make no apparent sense, like a cat has been walking over your friends keyboard, this is due to them using OMEMO encryption (end to end encryption), the message was not encrypted for your client and thus you are unable to decrypt it. To fix this, movim does key exchange when OMEMO is enabled, so enabling OMEMO encryption and then sending your friend a message such as "could not decrypt your messages, please send them again" should solve this issue.
As a warning, movim does have issues with OMEMO encryption due to the complexity of the XEP, it is being constantly improved. If you find a bug, do not hesitate to report it on movim's
Issue Tracker
.
Cannot enable OMEMO encryption
In order to enable OMEMO encryption, you must have your friend added as a contact, and visa versa, once this has been achieved a lock icon at the end of the message input box should appear, click this to enable OMEMO encryption.
MSI GF75 Thin 10SC

This article or section does not follow the
Laptop page guidelines
.
Reason:
Hardware table needs IDs and function keys table should be added (Discuss in
Talk:MSI GF75 Thin 10SC
)
Hardware
PCI/USB ID
Working?
GPU (NVIDIA)
10de:1f9d
Yes
GPU (Intel)
8086:9bc4
Yes
Webcam
5986:211c
Yes
Audio
8086:06c8
Yes
Wi-Fi
8086:06f0
Yes
Ethernet
10ec:8168
Untested
Bluetooth
8087:0026
Untested
Touchpad
Partial
Keyboard
Yes
Speakers
Yes
Firmware
Press
F2
to enter BIOS menu.
You can swap
Fn
and
Super
keys.
Secure Boot
can be disabled from the
Security
tab.
Function keys
Key
Visible?
Marked?
Effect
Fn+F2
Yes
Yes
Output switching
Fn+F3
No
Yes
Fn+F4
No
Yes
Fn+F5
No
Yes
Fn+F6
Yes
Yes
Switch state of webcam
Fn+F7
No
Yes
Fn+F10
No
Yes
Fn+F12
Yes
Yes
XF86Sleep
Fn+Left
Yes
Yes
XF86AudioLowerVolume
Fn+Right
Yes
Yes
XF86AudioRaiseVolume
Fn+Up
Yes
Yes
XF86MonBrightnessUp
Fn+Down
Yes
Yes
XF86MonBrightnessDown
Fn+Num_0
Yes
Yes
XF86AudioMute
Fn+Num_Minus
No
Yes
Raise keyboard backlight
Fn+Num_Plus
No
Yes
Decrease keyboard backlight
Webcam
Webcam works out of the box with the
uvcvideo
kernel module
.
Note
Do not forget to turn on the webcam with
Fn+F6
!
See also
https://linux-hardware.org/?probe=3d501c56aa