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

9vx is an implementation of the simple x86 virtual machine
vx32
specifically designed for running real Plan9 on other host systems.
Installation
Install
the
vx32-git
AUR
package.
A short tutorial
After installing 9vx:
Extract a Plan9 root file system (ISOs from
historical releases
[
dead link
2025-04-06—SSL error]
(
official Plan 9 website is archived
),
9atom
or
9front
all should work) into your directory of choice "/path/to/plan9" (9vx defaults to the directory /usr/local/plan9vx)
make sure that /opt/vx32/bin is in your PATH
invoke "9vx -r /path/to/plan9 -u glenda" to start as user Glenda, a local system administrator user account which can be used for installing programs and changing system settings. If you run the official Plan9 root file system, you will here also get a small tutorial about how to use rio and acme.
invoke "9vx -r /path/to/plan9" to start as your user (at first run, write /sys/lib/newuser at the rc prompt to set up your environment).
Problems
Running Plan9 from a directory can be very handy, especially since you easily can move files into your virtual system from your host system. It does however come with a cost, which is related to user permissions. You will most likely run into issues where directories can not be created since the virtual Plan9 system lacks write permissions.
Installing Plan9 on a disk image
One alternative to overcome this is to install a Plan9 according to these
instructions
.
Putting the Plan9 root file system in an insecure directory
A simpler but less secure way to solve the issue can be to utilize
chmod -R 777 /path/to/plan9/root/
This way, both user and glenda will be able to write to the plan9 root system and add directories.
Alternatives
Recent advances in 9front and possibly 9atom makes those distributions possible to install and boot under virtualbox. Things that may be needed to make them work:
Use the PIIX3 IDE controller
install support for USB v2.
Also, for the CWFS of 9front, you need to make a disk image of at least 12 GiB.
Waybar

Waybar
is a highly customizable
Wayland
bar for
Sway
and Wlroots based compositors. Its configuration is done in JSONC with styling in CSS.
Installation
Install
the
waybar
package.
For the icons of the preconfigured modules a font like
otf-font-awesome
is needed.
Some standard modules need further programs to function properly. Those are visible through error messages from those modules.
Configuration
This article or section needs expansion.
Reason:
This chapter only links to an external source. (Discuss in
Talk:Waybar
)
There are some good explanations in the
Waybar Wiki
.
See also
Official Git-Repository
Official Wiki
waybar(5)
Webmin

From the project
home page
:
Webmin is a web-based interface for system administration for Unix. Using any modern web browser, you can setup user accounts, Apache, DNS, file sharing and much more. Webmin removes the need to manually edit Unix configuration files like
/etc/passwd
, and lets you manage a system from the console or remotely. See the
standard modules
page for a list of all the functions built into Webmin, or check out the
screenshots
.
Installation
Install
the
webmin
AUR
package.
Configuration
To allow access to Webmin from a remote computer, configure your firewall to allow access to TCP port 10000. You may want to configure your firewall to restrict access only from certain IP addresses.
Change port
To change the port, edit the
port
variable in the
/etc/webmin/miniserv.conf
file.
/etc/webmin/miniserv.conf
[...]
port=10000
[...]
To disable SSL and avoid
Error — Document follows
change:
/etc/webmin/miniserv.conf
[...]
ssl=
0
[...]
Bind to localhost (only)
To bind Webmin to
localhost
(only), add the following line into your
/etc/webmin/miniserv.conf
file.
/etc/webmin/miniserv.conf
bind=127.0.0.1
Usage
Start
webmin.service
or
enable
it if you wish to load webmin at boot.
In a web browser, enter the https address of the server with the port number 10000 to access Webmin:
https://
host
:10000
You will need to enter the root password of the server running Webmin to use the Webmin interface and administer the server.
Web application package guidelines

The factual accuracy of this article or section is disputed.
Reason:
The file system layout is insufficient for more than one instance of a webapp. (Discuss in
Talk:Web application package guidelines
)
Arch package guidelines
32-bit
–
CLR
–
CMake
–
Cross
–
DKMS
–
Eclipse
–
Electron
–
Font
–
Free Pascal
–
GNOME
–
Go
–
Haskell
–
Java
–
KDE
–
Kernel modules
–
Lisp
–
Meson
–
MinGW
–
Node.js
–
Nonfree
–
OCaml
–
Perl
–
PHP
–
Python
–
R
–
Ruby
–
Rust
-
Security
–
Shell
–
VCS
–
Web
–
Wine
This page describes how to package web applications.
Separate user
For security reasons, every web application should be run as a separate (unprivileged) user (i.e.
$pkgname
).
Note
Traditionally, many web applications were run as the
http
user/group, which can be considered unsafe, as in such a scenario applications can read each other's files.
Refer to the
systemd-sysusers(8)
,
sysusers.d(5)
,
systemd-tmpfiles(8)
and
tmpfiles.d(5)
man pages for details on how to create users and deal with ownership of files and folders for that user in a package.
Directory structure
The layout follows the
FHS
.
/usr/share/
$pkgname
: The application's
data directory
holds the files of the web application. Files are owned by
root
and are therefore readonly to the application user and group
$pkgname
.
/etc/
$pkgname
: The
configuration directory
of the application holds configuration files for the application (symlinked to the
data directory
). Files located here have to go to the
backup
array and are owned by the user and group
$pkgname
.
Warning
Files potentially containing authentication information
must be protected
(i.e. not readable by any other user or group on the system, except
root
and
$pkgname
)!
/run/
$pkgname
: The
runtime directory
of the application (owned by the user and group
$pkgname
). It can be used for sockets (e.g. in setups facilitating
socket activation
).
Note
According to the package guidelines on
directories
,
/run
must not be contained in a package. Use
tmpfiles
to add the directory with matching permissions.
/var/cache/
$pkgname
: The
cache directory
of the application (owned by the user and group
$pkgname
). It (or subfolders in it) is symlinked to the
data directory
for applications requiring writable cache directories.
/var/lib/
$pkgname
: The
persistent storage
of the application (owned by the user and group
$pkgname
). It (or subfolders in it) is symlinked to the
data directory
for applications requiring persistent storage directories.
Web feed

Related articles
List_of_applications/Internet#News,_RSS,_and_blogs
Rss2email
Certain websites provide
web feeds
or
news feeds
in
RSS
,
Atom
, or
JSON
format.
News aggregators
can check these feeds for updates allowing the user to subscribe to a blog or podcast.
Obtaining web feeds
Even if a website does not advertise a web feed, it might still provide one. Try appending
/feed
or
/rss
to the URL. If that fails, open the website's source code by pressing
Ctrl+u
and then
Ctrl+f
to search for
<link rel="alternate" type="application/atom+xml"
or
<link rel="alternate" type="application/rss+xml"
. The Firefox addon
Awesome RSS
adds a clickable icon to the address bar if a web feed is available.
If a website does not provide a feed, try
RSS-Bridge
.
The following sections describe how to obtain feeds for certain websites.
Arch Linux
News
Overview page of all feeds
GitHub
Commits feeds use the following syntax:
https://github.com/
user
/
repo
/commits/
branch
/
path
/
to
/
subdir
.atom
Reddit
Reddit provides
feeds
for subreddits, posts and users: simply add
.rss
to the URL. If you have a Reddit account, you can find your personal feeds in
the preferences
.
YouTube
Subscribe to a channel:
https://www.youtube.com/feeds/videos.xml?channel_id=UC
xxxxxxxxxxxxxxxxxxxxxx
If the channel has a legacy URL ending in
/user/
username
, you can also use:
https://www.youtube.com/feeds/videos.xml?user=
username
You can download your subscriptions list from
Google Takeout
and convert it to
OPML
using
[1]
.
WhatsApp

WhatsApp
is a mobile-first instant messaging service owned by Meta, featuring end-to-end encryption. It requires an active mobile phone number and data connection to operate.
There is no official WhatsApp desktop client for Linux, and Meta has strictly attempted to ban third-party clients and plugins using their protocol. You might want to avoid using WhatsApp altogether in favor of IM services with more openness, such as
XMPP
,
signal-desktop
,
Telegram
, or
Matrix
.
Installation
You can use one of following methods in order to use WhatsApp in Arch:
Web
WhatsApp Web
, the only official way of using WhatsApp on Linux.
Tip
For Chromium users who use only one profile:
Create and configure a new Chromium profile.
Open WhatsApp Web in the new profile.
Install WhatsApp Web as an app (
Hamburger menu > Cast, save, and share > Install WhatsApp Web...
).
Set the
--profile-directory=Default
flag. See
Chromium#Making flags persistent
for more details.
This way, WhatsApp Web will always open in the new profile while links and other shortcuts will open in your default profile. You can clear browsing data without worrying about it clearing your WhatsApp login.
Web-based clients
ElecWhat
— Simple and stable WhatsApp client. Uses system
electron
package to save resources.
https://github.com/piec/elecwhat/
||
elecwhat-bin
AUR
Ferdium
— A community fork of
franz
, previously created to offer an alternative to
ferdi
.
https://ferdium.org/
||
ferdium
AUR
Franz
— An open-source Chrome-based application that can be used for web-based interface of various instant messaging software including WhatsApp.
https://meetfranz.com/
||
franz
AUR
Hamsket
— A GPL-licensed alternative to Franz, forked from the last open sources of Rambox. Unmaintained.
https://github.com/TheGoddessInari/hamsket
||
hamsket
AUR
Silos
— Another web-app container for multimedia apps like WhatsApp web.
https://github.com/intersimone999/pyqtws
||
silos
AUR
WALC
— An unofficial WhatsApp Desktop client for Linux systems.
https://github.com/WAClient/WALC
||
walc
AUR
WasIstLos (formerly WhatsApp for Linux)
— An unofficial WhatsApp desktop application for Linux.
https://github.com/xeco23/WasIstLos
||
wasistlos
AUR
WhatsDesk
— A desktop wrapper of WhatsApp Web built using Electron.
https://gitlab.com/zerkc/whatsdesk/
||
whatsdesk-bin
AUR
Whatsie
— A desktop wrapper of WhatsApp Web built using Qt WebEngine.
https://github.com/keshavbhatt/whatsie
||
whatsie
AUR
WhatsTux
— A Rust and GTK WhatsApp Web Client.
https://gitlab.com/nexxontech/whatstux
||
whatstux
AUR
ZapZap
— A WhatsApp desktop application written in Pyqt6 + PyQt6-WebEngine.
https://rtosta.com/zapzap
||
zapzap
AUR
TUI-based clients
whatscli
— TUI-based experimental WhatsApp application. Supports
Vim
-like navigation natively.
https://github.com/normen/whatscli
||
whatscli
AUR
nchat
— A terminal-based chat client with support for WhatsApp.
https://github.com/d99kris/nchat
||
nchat-git
AUR
Wiimote

This article will go through the basic steps required to have a working
Wiimote
in Linux for general use. It will not go into much detail for some steps as there are many guides already written for some parts already.
Prerequisites
Bluetooth
A Wii Remote
Wiimotes connect via
Bluetooth
. This must already be configured and running without the help of this guide. You will need a Wiimote, this can include (although are not required) the Nunchuk and Classic Control attachments.
Once a Wiimote is connected via Bluetooth, the device should start working, as the kernel driver for the Wiimote is in Linux since version 3.1 and the
bluez
package in Arch Linux includes the required wiimote plugin.
Connect the Wiimote
See
XWiimote#Connect the Wii Remote
.
Infrared sources
Possible infrared sources are
Nintendo Wii Sensor Bar
Wireless sensor bar - check eBay!
Normal light bulbs
Small candles (should have about 30cm distance)
Home made sensor bar (
[1]
)
Input device
X11
XWiimote provides an X11 input driver for using a Wiimote as a desktop input device. See
XWiimote#X.Org Input Driver
for details.
cwiid
Note
This approach is based on software which is no longer developed upstream. You should use the Linux kernel driver and
uinput
or
XWiimote
instead.
The Wiimote can act as a regular input device like a mouse using
wminput(1)
from the
cwiid
AUR
package. This package contains a userspace driver, libraries, and programs required for basic use of the Wiimote.
First you need to make sure to load the
uinput
module:
# modprobe uinput
You should have a device in
/dev/uinput
now. For permanent use,
add uinput to MODULES in mkinitcpio.conf
.
cwiid
should allow you to scan for your Wiimote now. Run the following command and press the
1
and
2
buttons on your Wiimote:
$ bluetoothctl scan on
Scanning ...
MAC_address
Nintendo RVL-CNT-01
Once your Wiimote has been detected you can test if it is working by running
wmgui(1)
[
dead link
2025-11-17—HTTP 404]
and testing out various buttons and sensors through that interface.
If you have
no infrared source
, simply run:
$ wminput -w
You can control your pointer now by tilting your Wiimote forward, backward or to the sides.
If you
have an infrared source
, run:
$ wminput -c ir_ptr -w
Configuration
The default configuration files are in
/etc/cwiid/wminput/
. They are a good starting point for your customized settings in
~/.cwiid/wminput
or
/usr/local/etc/cwiid/wminput
. The general syntax is:
Wiimote_button
=
keyboard_key
All possible values for
Wiimote_button
can be found in
cwiid/wminput.list
. The possible values for
keyboard_key
are
keycodes
in
/usr/include/linux/input-event-codes.h
.
Unable to open uinput
If
wminput
gives this error, leaving you unable to use the Wiimote, create a
udev rule
with the following contents
[2]
:
KERNEL=="uinput", GROUP="wheel", MODE="0660"
Reboot the system afterwards. See also
wminput(1) § DESCRIPTION
regarding
udev
rules for
uinput
.
Alternatively, add
uinput
to the
MODULES
array in
mkinitcpio.conf
:
MODULES=(
uinput
...)
Regenerate the initramfs
and reboot the system afterwards.
See also
XWiimote
Wii hacking

This article or section is a candidate for merging with
List of applications
.
Notes:
Unless expanded, this article is only a collection of links to packages and would be more accessible on the list of applications (Discuss in
Talk:Wii hacking
)
A few starting packages for hacking the Wii on Arch Linux. Also see
Wiibrew.org
for a guide to getting homebrew setup on the Wii.
Native Coding
wiiload
AUR
lets you upload games to the Homebrew Channel
wit
- tools to manipulate Wii and GameCube ISO images
Wiimote
cwiid
AUR
- a library in C for working with the Wii Remote.
Emulation
dolphin-emu
- the dominant emulator for the Wii (also supports Gamecube).
dolphin-emu-git
AUR
- development version
Wim

WIM (
M
icrosoft
W
indows
I
maging Format) is a file-based disk image format for Windows. It is often used in Windows installers.
Installation
On Linux,
install
wimlib
to work on these files.
View information
To view information about the WIM file (including but not limited to: name, index, etc…), use:
$ wiminfo
image_file
Mount
WIM as an image file can be mounted with the following command
Read-only mount
# wimmount
image_file
index
directory
Mount as read/write
# wimmount
rw
image_file
index
directory
Unmount
# wim
un
mount
directory
--commit
to apply the changes in the read-write mount.
Note
No changes will be applied without the
--commit
parameter.
Directory structure
To view the directory structure of a WIM image, use:
# wimdir
image_file
index
Extract the image
To extract the full image, do:
# wimapply
image_file
index
target_directory
If you only need a few files from the image, use
wimextract(1)
.
Compression
The Windows ISO is larger than 4GiB, so it cannot be copied to a boot disk formatted with the FAT32 file system, you will need to compress
install.wim
to do this:
# wimlib-imagex optimize install.wim --solid
Xc3sprog

xc3sprog
is a suite of utilities for programming Xilinx FPGAs, CPLDs, and EEPROMs with the Xilinx Parallel Cable and other JTAG adapters
Installation
Install
the
xc3sprog-svn
AUR
package.
Devices
Xilinx USB JTAG
Initially has
USBID=03fd:000f
, after proper initialization becomes
03fd:0008
.
install
fxload
AUR
extract
xusb_xlp.hex
from
Xilinx ISE
create
:
/etc/udev/rules.d/99-xilinx.rules
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", RUN+="/usr/bin/fxload -v -t fx2 -I /path/to/xusb_xlp.hex -D $tempnode"
reload udev rules with
# udevadm control --reload
and replug JTAG
test connection with
$ xc3sprog -c xpc -j
xcursorgen

xcursorgen
is a tool that allows for creation of cursor files to be used with
Xorg
. A cursor can be created from
PNG
files.
Installation
Install
the
xorg-xcursorgen
package.
Usage
By default, the user has to supply two files to
xcursorgen
:
a square image file saved as PNG
a configuration
xcursorgen
takes two arguments: the configuration file and an output path.
The configuration file must at least contain the following, space-delimited values:
image size in pixels
hotx
: the x coordinate of the pointer tip
hoty
: the y coordinate of the pointer tip
file name
Suppose there is an image file named
red.png
of 32x32 pixels. Save this configuration file alongside:
red.cursor
32 2 4 red.png
and run:
$ xcursorgen red.cursor default
This will create the cursor as
default
which can later on be used with Xorg.
The pointer tip is located in the upper left.
Animated cursors
Animated cursors are created from multiple image files.
For animated cursors copy the configuration line for each image file and specify a delay in milliseconds for each frame:
anim.cursor
32 2 4 anim01.png 50
32 2 4 anim02.png 50
32 2 4 anim03.png 50
32 2 4 anim04.png 50
Installing created cursor files
If only some cursors of an already existing cursor theme should be changed, create a custom directory in
~/.local/share/icons/
.
Create this file inside the folder:
index.theme
[Icon Theme]
Name =
name
Comment =
comment
Example = default
Inherits =
the_old_cursor_theme
Note that the
name
has to be the same as the directory name.
Next, copy the cursor file created from
xcursorgen
into a subdirectory
cursors
, e.g.:
RedCursors/
|── cursors
|   |── default
|   └── xterm
└── index.theme
Now,
configure
your system to use this newly created cursor theme.
Note that most applications have to be restarted to use the new cursor theme.
For more information, refer to
Cursor themes#Manually
.
XDG Autostart

The
XDG Autostart specification
defines a method for
autostarting
ordinary
desktop entries
on
desktop environment
startup and removable medium mounting, by placing them in
specific directories
.
Prerequisites
You need to use either a
desktop environment
that supports it, or a dedicated implementation, like:
dex
dapper
AUR
fbautostart
AUR
systemd-xdg-autostart-generator
Directories
The Autostart directories in order of preference are:
user-specific:
$XDG_CONFIG_HOME/autostart
(
~/.config/autostart
by default)
system-wide:
$XDG_CONFIG_DIRS/autostart
(
/etc/xdg/autostart
by default)
[1]
System-wide desktop entries can be overridden by user-specific entries with the same filename.
Tip
To disable a system-wide entry, create an overriding entry containing
Hidden=true
.
To list autostart programs,
install
dex
and run
dex -ad
.
For more details, read
the specification
.
XDM

Related articles
Display manager
From
xdm(8) § DESCRIPTION
:
Xdm
manages a collection of X displays, which may be on the local host or remote servers. The design of
xdm
was guided by the needs of X terminals as well as The Open Group standard XDMCP, the
X Display Manager Control Protocol
.
Xdm
provides services similar to those provided by
init
,
getty
and
login
on character terminals: prompting for login name and password, authenticating the user, and running a "session."
XDM provides a simple and straightforward graphical login prompt.
Installation
Install
the
xorg-xdm
package. Optionally, install the
xdm-archlinux
package for Arch Linux themes.
Follow
Display manager#Loading the display manager
to start XDM at boot.
Note
If
xdm-archlinux
is installed, the corresponding service to be used is
xdm-archlinux.service
instead of the standard
xdm.service
.
Configuration
Defining the session
Unlike many more modern
display managers
such as
GDM
or
LightDM
, XDM does not source available sessions from
.desktop
files located in the
/usr/share/xsessions
directory. As such, XDM does not have a 'session menu.' Instead, XDM will execute the
.xsession
file in the home directory.
For example, to start
Xfce
upon login, the
~/.xsession
file should look like this:
startxfce4
Ensure that the
.xsession
file in your home directory is
executable
.
Theming
For the exact meanings of the options discussed below, see
xdm(8)
. The configuration file is located in
/etc/X11/xdm/Xresources
, notice that if you installed
xdm-archlinux
the configuration file will instead be located in
/etc/X11/xdm/archlinux/Xresources
.
Background wallpaper
Install
qiv
AUR
.
Create
a directory to put wallpapers in, e.g
/usr/local/share/backgrounds
and then place them inside it.
Edit
/etc/X11/xdm/Xsetup_0
. Change the
xconsole
command to
/usr/bin/qiv -zr /usr/local/share/backgrounds/*
Font
Edit
/etc/X11/xdm/Xresources
. Add/replace the following defines:
xlogin*
greetFont:  -adobe-helvetica-bold-o-normal--20-
-
-
-
-
-iso8859-1
xlogin*
font:       -adobe-helvetica-medium-r-normal--14-
-
-
-
-
-iso8859-1
xlogin*
promptFont: -adobe-helvetica-bold-r-normal--14-
-
-
-
-
-iso8859-1
xlogin*
failFont:   -adobe-helvetica-bold-r-normal--14-
-
-
-
-
-iso8859-1
Login dialog positioning
This configuration will move the login dialog to the bottom right of the screen.
xlogin*frameWidth: 1
xlogin*innerFramesWidth: 1
xlogin*logoPadding: 0
xlogin*geometry:    300x175-0-0
Removing the logo
Comment out the logo defines:
#xlogin*logoFileName: /usr/share/xdm/pixmaps/xorg.xpm
#xlogin*logoFileName: /usr/share/xdm/pixmaps/xorg-bw.xpm
Multiple X sessions & Login in the window
With the
XDMCP
enabled, you can easily connect to local or remote XDM instance and run multiple X sessions simultaneously on the same machine:
# X -query
xdmcp-server-ip
:2
This command will launch the second session in window using
Xephyr
:
$ Xephyr -query
xdmcp-server-ip
:2
Passwordless login
In order to enable passwordless login for XDM, add the line below to
/etc/X11/xdm/Xresources
:
xlogin*allowNullPasswd: true
XDMCP

From
Wikipedia
:
The X Display Manager Control Protocol (XDMCP) uses UDP port 177. An X server requests that a display manager start a session by sending a Query packet. If the display manager allows access for that X server, it responds by sending a Willing packet back to the X server.
This allows for opening X sessions remotely.
Warning
XDMCP is, similarly to telnet, doing unencrypted authentication. If snooping is possible, this leaves the system vulnerable to attack. It is disabled by default, using an ssh tunnel for X traffic is preferred.
Setup graphical logins
XDM
Comment the last line of the configuration file with a
!
:
/etc/X11/xdm/xdm-config
!DisplayManager.requestPort:    0
Then allow any host to get a login window in by un-commenting the following:
/etc/X11/xdm/Xaccess
*             #any host can get a login window
In case you have multiple network interfaces also add a line like this:
LISTEN 192.168.0.10
Where
192.168.0.10
is your server IP address.
Then
restart
xdm.service
.
GDM
Enable XDMCP in the configuration file:
/etc/gdm/custom.conf
[xdmcp]
Enable=true
Port=177
Then
restart
gdm.service
.
LightDM
Enable the XDMCP Server in the configuration file:
/etc/lightdm/lightdm.conf
[XDMCPServer]
enabled=true
port=177
On a headless system, disable the automatic start of one seat so that LightDM can run in the background:
[LightDM]
start-default-seat=false
Then
restart
lightdm.service
.
Accessing X from a remote machine on your LAN
You can access your login manager on the network computer (using
192.168.0.10
in the  following command). TCP and UDP streams are opened. So it is not possible to access the login manager via an SSH connection.
$ Xnest -query 192.168.0.10 -geometry 1280x1024 :1
Or, with
Xephyr
, if you experience refreshing problems with Xnest:
$ Xephyr -query 192.168.0.10 -screen 1280x1024 -br -reset -terminate :1
Or, if you are on runlevel 3
$ X -query
server address
Xserver should recognize your monitor and set appropriate resolution.
Note
You can enable XDMCP Direct/Query and Broadcast connections from remote hosts without XDM starting a local X server.
After allowing XDMCP access as described above, edit
/etc/X11/xdm/Xservers
and comment out:
#:0 local /usr/bin/X :0
Then launch XDM as root, e.g.
xdm -config /etc/X11/xdm/archlinux/xdm-config
Thin client setup
This article or section needs expansion.
Reason:
Why does DHCP
and
TFTP need to be setup ? (Discuss in
Talk:XDMCP
)
First of all one should setup dhcp and tftp server.
Dnsmasq
has both of them.
For network boot image check
thinstation
project.
If your network card does not support PXE, you can try
Etherboot
GUI-based Clients
Remmina
Xming for Windows
Troubleshooting
Session declined: Maximum Number of Sessions Reached
Edit
/etc/gdm/custom.conf
and increase
MaxSessions
. It is worth noting that there may be a limit regarding how many XDMCP connections are allowed at once, so it's worth increasing
DisplaysPerHost
as well
[1]
if multiple clients are connecting from the same IP.
[xdmcp]
Enable=true
MaxSessions=
X
DisplaysPerHost=
X
Xephyr

This article or section needs expansion.
Reason:
Mention how this can be used against keylogging attacks
[1]
, mention layers like
gdm
(Discuss in
Talk:Xephyr
)
Xephyr
is a nested X server that runs as an X application.
This may be useful to workaround a badly written application. For example, Supermicro servers may be controlled with a java ipmi kvm viewer application. While the server is rebooting, the application frequently recreates its window and steals focus from your current window. This happens several times per minute, and makes your work impossible. It is not obvious how to make a window rule that prevents such application's window from gaining focus when created, because focus must be given when launched for the first time. Using Xephyr allows you to keep these window recreations inside a separate window, which does not steal focus from your currently opened window(s).
Installation
Install
xorg-server-xephyr
.
Usage
If you wish to run a nested X window, you will need to specify a new display:
$ Xephyr -br -ac -noreset -screen 800x600 :1
This will launch a new Xephyr window with a DISPLAY of ":1". In order to launch an application in that window, you would need to specify that display:
$ DISPLAY=:1 xterm
Launching window managers
If you want to launch a specific WM,
spectrwm
for example, you would type:
$ DISPLAY=:1 spectrwm
You can also launch Xephyr with your
xinitrc
using startx:
$ startx -- /usr/bin/Xephyr :1
Grabbing and un-grabbing user input
Pressing
Ctrl+Shift
should lock/unlock your mouse pointer and your keystrokes inside Xephyr window exclusively if possible.
Sending Alt+Tab
This article or section needs expansion.
Reason:
What solution for a non-DE specific environment? (Discuss in
Talk:Xephyr
)
If using KDE, create a window rule to ignore global shortcuts. Then you can use
Alt+Tab
inside Xephyr.
Tips and tricks
Other examples for situations where Xephyr can be useful are:
A testing environment for an X application, or feature, in which the tester would like to keep working in their usual X environment, yet defending the other applications from failures of the application under test.
OpenSSH#Remote
emphasize 3 settings in the sshd server  configuration file for
OpenSSH#X11 forwarding
(over ssh). 2 of these, out of 3, are the default settings. When the ssh client can not influence the ssh server administrator to set the 3rd one,
X11Forwarding
, to yes,
Forwarding X11 over ssh
uses Xephyr as a work around to be installed in the ssh client machine.
Xhost

From Xhost man page (boldface added):
The xhost program is used to add and delete host names or user names to the list allowed to make connections to the X server. In the case of hosts, this provides a rudimentary form of privacy control and security.
It is only sufficient for a workstation (single user) environment
, although it does limit the worst abuses. Environments which require more sophisticated measures should implement the user-based mechanism or use the hooks in the protocol for passing other authentication data to the server.
See
xhost(1)
for the full info.
Installation
Install
the
xorg-xhost
package.
Usage
Warning
This command grants any local user access to your X screen. That might be OK for a single-user machine, but usually not for a multi-user system. If you want to grant root access to your X screen, it is preferable to set the
$XAUTHORITY
environment variable. This variable is kept by
sudo
and
su
by default (but not
su -
).
To provide access to an application running with
sudo
or
su
to the graphical server (aka your X session aka your computer screen), open a terminal and type as your normal user:
$ xhost +SI:localuser:
username
To get things back to normal, with controlled access to the X screen:
$ xhost -
xhost +
will disable X authentication entirely. Do
not
do that unless you really know what are you doing.
The 'cannot connect to X server :0.0' output
Warning
This command disables access control, meaning that any user on the system, or on your network if X is listening on the network, has access to your
$DISPLAY
without any authentication. This opens a security hole on your system that allows other users to launch applications (including key loggers) on your X server.
The above command
xhost +
will get you rid of that output, albeit momentarily; one way of getting permanently rid of this issue, among many, is to add
xhost + > /dev/null
to your
~/.bashrc
file. This way, each time you fire up the terminal, the command gets executed. If you do not yet have a
.bashrc
file in your home directory, it is OK to create one with just this line in it. If you do not add
> /dev/null
then each time you fire a terminal, you will see a non-disruptive message saying:
access control disabled, clients can connect from any host
, which is your confirmation that you can now run
your_software
as root without issue.
See also
X authentication with cookies and xhost ("No protocol specified" error)
Xiaomi Mi Notebook Pro 15.6

This article or section does not follow the
Laptop page guidelines
.
Reason:
Needs PCI/USB IDs, firmware secion and an improved function keys table (Discuss in
Talk:Xiaomi Mi Notebook Pro 15.6
)
Hardware
PCI/USB ID
Working?
Bluetooth
8087:0a2b
Yes
Webcam
05c8:03b7
Yes
Wi-Fi
8086:24fd
Yes
GPU (Intel)
8086:5917
Yes
GPU (nvidia)
10de:1d12
Yes
Touchpad
Yes
Keyboard
Yes
TPM
Yes
Fingerprint reader
04f3:0c1a
Yes
SD-card reader
0bda:0129
Yes
Audio
8086:9d71
Yes
Installation
Enter the UEFI menu by pressing
F2
during Boot and disable the password and
Secure Boot
.
Security -> Set password
Security -> Disable Secure Boot
Reset the password by setting the password again but letting the "New Password" fields blank.
Function keys
Key
Effect
Esc
Enables/disables Fn lock
F1
XF86AudioMute
F2
XF86AudioLowerVolume
F3
XF86AudioRaiseVolume
F4
XF86MonBrightnessDown
F5
XF86MonBrightnessUp
F6
Super_L + P
F7
Invokes user-defined action if "xiaomi_wmi" module is loaded
F8
Super_L + Tab
F9
Enables/disables touchpad
F10
Enables/disables keyboard backlight
F11
Print
F12
Insert
Display
Factory display calibration is poor. Check the panel model:
$ edid-decode < /sys/class/drm/card0-eDP-1/edid | grep Alphanumeric
If it is NV156FHM-N61, try the
ICC profiles
at
[1]
.
The path to the backlight is non-standard and causes tools like
xorg-xbacklight
to not work. To fix this issue, you have to setup Intel driver and add Backlight option to respective X-Org configuration file:
/etc/X11/xorg.conf.d/10-backlight.conf
Section "Device" 
        Identifier "Card0" 
        Driver     "intel" 
        Option     "Backlight"  "intel_backlight" 
        BusID      "PCI:0:2:0" 
EndSection
Touchpad troubles
You may face a problem when the kernel sees 2 touchpad devices
if you have multiple touchpad devices displayed in libinput list-devices
Try to add i8042.noaux kernel param
TPM issues
BIOS used in this model does not allow enabling SHA256 PCR bank, all measurements are  done to SHA1 PCR bank only.
Xiaomi RedmiBook Pro 15 2023

This article or section does not follow the
Laptop page guidelines
.
Reason:
Missing an accessibility section, some IDs in the hardware table, a "Function keys" table  (Discuss in
Talk:Xiaomi RedmiBook Pro 15 2023
)
Hardware
PCI/USB ID
Working?
GPU
Yes
Wi-Fi
35f5:7922
Yes
Audio
1d72:2209
Yes
Touchpad
04F3:3238
Yes
Webcam
2b7e:c687
Yes
Fingerprint reader
10a5:9201
Needs custom driver
Bluetooth
35f5:7922
Yes
This article covers the installation and configuration of Arch Linux on a RedmiBook Pro 15 2023 Ryzen edition laptop. Almost everything seems to work pretty much out the box.
For a general overview of laptop-related articles and recommendations, see
Laptop
.
Display
Color profile for display
Fingerprint reader
Needs
custom driver
to work with
fprintd
S3 sleep / s2idle
S3 sleep is not supported. However, s2idle works out of the box and causes no problems with sleep / hibernation.
If you have trouble with waking up, see
AMDGPU#Failure to suspend to RAM
.
To get S3 to work, one needs to patch ACPI. You ma experience a white screen after wake up with
this patch
.
Other ACPI issues
There is
error on startup
and
amdgpu error is dmesg
. But seems like theese errors does not touch functionality.
Speakers
You can use
Lenovo ThinkPad P14s (AMD) Gen 4#Speakers
tweak to get better sound.
Function keys
Additional keys by Xiaomi(Cut, settings, AI) needs
DKMS driver.
Other
Great optimization guide for this notebook
xinput

This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Not sure if we need this page. Many examples are scattered across pages such as
libinput
,
Touchpad Synaptics
,
Mouse acceleration
,
Mouse buttons
or
Touchscreen
. They are much more useful than this page and collecting everything here is most likely futile. (Discuss in
Talk:Xinput#Future of this page
)
Related articles
Xorg
libinput
xinput
is a utility to configure and test X input devices, such as mice, keyboards, and touchpads. It is found in the
xorg-xinput
package.
Usage
List devices
To list what xinput devices are available, use:
$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ DELL0ABC:DE F123:4567 Mouse             	id=9	[slave  pointer  (2)]
⎜   ↳ DELL0ABC:DE F123:4567 Touchpad          	id=10	[slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                      	id=16	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Video Bus                               	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=7	[slave  keyboard (3)]
    ...
A
device
may be identified by its name (
"DELL0ABC:DE F123:4567 Touchpad"
) or ID (
10
).
When being executed in a startup script, it is recommended that you use the name, as the ID may change following a reboot and lead to inconsistencies.
List properties
To list all the properties of a device that can be set, use the following command:
$ xinput list-props
device
This may yield results like such:
$ xinput list-props "DELL0ABC:DE F123:4567 Touchpad"
Device 'DELL0ABC:DE F123:4567 Touchpad':
	Device Enabled (179):	1
	Coordinate Transformation Matrix (181):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Tapping Enabled (336):	0
	libinput Tapping Enabled Default (337):	0
	libinput Tapping Drag Enabled (338):	1
	libinput Tapping Drag Enabled Default (339):	1
    ...
Each
property
can be identified using its name (
"libinput Tapping Enabled"
) or number (
336
).
As with devices, it is recommended to use the name in startup scripts, as the ID may change, albeit less often.
Set device properties
Properties of devices can be set one or more (up to three) values. The syntax for setting a property to a value is:
$ xinput set-prop
device
property
values
Where
values
is replaced with the value(s) of the property.
For an instance, to enable tapping with the above output. Either of the following commands could be used:
$ xinput set-prop "DELL0ABC:DE F123:4567 Touchpad" "libinput Tapping Enabled" 1
or
$ xinput set-prop 10 338 1
On success, no output should be produced.
Usage examples
Below are some of the ways
xinput
can be used.
Remove the middle and right mouse buttons
$ xinput set-button-map
mouse-device
1 1 1
The above command will make middle and right mouse button to function like the left button. Putting zeros will disable them.
$ xinput set-button-map
mouse-device
1 0 0
Xlivebg

Xlivebg
is a live wallpaper framework, and collection of live wallpapers, for the
X
window system. It provides all the groundwork necessary for displaying animated graphics with OpenGL on the root window, so that a variety of live wallpapers can be written without having to deal with how to tie everything to the X window system, how to create the OpenGL context itself, or how to present any configurable parameters of the live wallpaper to the user.
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Stub: this page is incomplete. You can help by expanding it! (Discuss in
Talk:Xlivebg
)
Installation
Install
the
xlivebg
AUR
package.
Configuration
The preferred user configuration is at
~/.config/xlivebg.conf
, while a system configuration lives at
/etc/xlivebg.conf
.
A graphical configuration tool is provided as
xlivebg-gui
.
Usage
See
Autostarting#On Xorg startup
for the details on starting a
xlivebg
instance automatically.
Known issues
Output corrupted or absent when using a compositor
When using a
compositor
such as
xcompmgr
, use the
-n
flag to instruct xlivebg to draw to its own desktop window and not the root window.
Xournal++

Xournal++
is an open source handwriting app written in C++ supporting annotation of PDF files, it is a rewrite of Xournal to be more efficient and to enhance the functionality, while remaining backwards compatible with Xournal and is able to read and edit Xournal files (
.xoj
).
Installation
Xournal++ is provided by multiple packages,
install
either:
xournalpp
- Latest stable release.
xournalpp-git
AUR
- Latest git commit, built from source.
Troubleshooting
Why has the PDF background disappeared after moving files?
Xournal++ currently does not support including the PDF within files, thus both the PDF and
.xopp
file must be kept together otherwise the PDF background will disappear. This is currently being worked on, find the issue on
Github
.
Can Xournal read Xournal++ files (.xopp)?
Theoretically yes, according to the developers the file format is the same however
.xopp
store new features which are not included on Xournal, thus as long as only features supported in both Xournal and Xournal++ the file should be interchangeable between applications.
However, Xournal++ can export
.xopp
files as
.xoj
files to convert from Xournal++ to Xournal.
Recorder could not be started
Check if the device set in Xournal++ preferences is an actual microphone.
[1]
xprofile

Related articles
xinitrc
An xprofile file,
~/.xprofile
and
/etc/xprofile
, allows you to execute commands at the beginning of the X user session - before the
window manager
is started.
The xprofile file is similar in style to
xinitrc
.
Compatibility
The xprofile files are natively sourced by the following display managers:
GDM
-
/etc/gdm/Xsession
LightDM
-
/etc/lightdm/Xsession
LXDM
-
/etc/lxdm/Xsession
SDDM
-
/usr/share/sddm/scripts/Xsession
Sourcing xprofile from a session started with xinit
It is possible to source xprofile from a session started with one of the following programs:
startx
xinit
XDM
Any other
Display manager
which uses
~/.xsession
or
~/.xinitrc
All of these execute, directly or indirectly,
~/.xinitrc
or
/etc/X11/xinit/xinitrc
if it does not exist. That is why xprofile has to be sourced from these files.
~/.xinitrc and /etc/X11/xinit/xinitrc
#!/bin/sh

# Make sure this is before the 'exec' command or it won't be sourced.
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f ~/.xprofile ] && . ~/.xprofile

...
Configuration
Firstly, create the file
~/.xprofile
if it does not exist already. Then, simply add the commands for the programs you wish to start with the session. See below:
~/.xprofile
tint2 &
nm-applet &
Xsettingsd

Related articles
Desktop environment
X resources
Window manager
Xsettingsd
is a lightweight
xsettings
daemon which provides settings to
Xorg
applications via the
XSETTINGS
specification.
Some desktop environments (such as
Plasma
by default, or a
custom
one) do not include this. In such environments running an
xsettings
daemon is necessary for some applications (most notably
GTK
–,
Java
– and
Wine
–based) to use the selected theme, cursor, font, and other settings.
Installation
Install
xsettingsd
or
xsettingsd-git
AUR
.
Configuration
xsettingsd(1)
contains just brief intro, see
README
for details.
An example configuration to
X FreeType
font rendering (you can use your preferred
config file path
):
~/.config/xsettingsd/xsettingsd.conf
Xft/Antialias   1
Xft/DPI         98304
Xft/Hinting     1
Xft/HintStyle   "hintfull"
Xft/lcdfilter   "lcddefault"
Xft/RGBA        "rgb"
Note
Xft/DPI
is your DPI multiplied by
1024
.
Fonts with your
real
DPI (like
94*1024
) might look better than with artificial (like
96*1024
) one, but you may encounter glitches (e.g. no borders on pop-up tips) in your application.
Although
X resources
and
xsettings
parameter names may look similar, they all are case-sensitive. E.g. you should put
Xft.dpi: 96
in
~/.Xresources
and
Xft/DPI  98304
in
~/.xsettingsd.conf
.
Usage
Start
the
user unit
xsettingsd.service
.
This unit is
static,
so it cannot be
enabled
directly. You can autostart it (or
xsettingsd
binary) on
Xorg
,
desktop environment
or
window manager
startup.
Note
KDE
with
kde-gtk-config
installed will start the
binary
automatically.
The unit is configured as
PartOf
the
graphical-session.target
, so it stops (restarts) when
graphical-session.target
is stopped (restarted), see
systemd.unit(5) § [UNIT] SECTION OPTIONS
and
systemd.special(7) § Special Passive User Units
.
Troubleshooting
Unable to open connection to X server
Check that
DISPLAY
and
XAUTHORITY
environment variables are set.
If you are starting the
systemd
unit, check that
systemctl --user import-environment DISPLAY XAUTHORITY
was executed (it can be done by
/etc/X11/xinit/xinitrc.d/50-systemd-user.sh
invoked from your
~/.xinitrc
).
Yabsnap

Related articles
Btrfs
Snapper
Yabsnap
is a scheduled snapshot manager for
Btrfs
partitions written for Arch.
Installation
Install
the
yabsnap
AUR
package.
Configuration
Run the following to create a skeleton config:
# yabsnap create-config 'configname'
This will create
/etc/yabsnap/configs/confignane.conf
. Edit the file to specify the following:
source
- The location where a subvolume is mounted. E.g.
/home
.
dest_prefix
- The full path and prefix for the snapshot names to be created. E.g.
/.snapshot/@home-
will create files snapshot backups such as
/.snapshot/@home-20230525120000
.
You can also edit other parameters to specify when backups will be triggered and cleaned up.
Main commands
Viewing snapshots
To review existing snapshots, use:
$ yabsnap list
Creating snapshots
To create snapshots for all configs, use:
# yabsnap create --comment 'COMMENT'
You can also restrict to a specific mounted subvolume. Yabsnap will automatically find the right config for it and use it:
# yabsnap --source '/home' create --comment 'COMMENT'
Cleaning up or deleting snapshots
Automatic cleanups
Yabsnap will automatically delete snapshots based on the configurations in
/etc/yabsnap/configs/*.conf
.
Deleting snapshots
You can also manually remove snapshots, with the following commands:
Specifying full path deletes a specific snapshot:
# yabsnap delete /.snapshots/@home-20230525120000
Specifying a timestamp deletes all matching snapshots that were taken together:
# yabsnap delete 20230525120000
Creating a rollback
Rollback requirement: Mount by subvol and not subvolid
It is recommended that you mount all the volumes with subvol instead of subvolid.
For example, this can be your
fstab
entry:
UUID=[YOUR_UUID] / btrfs rw,noatime,ssd,space_cache=v2,compress=zstd,subvol=/@ 0 0
Note
The notation used is
subvol=/@
.
Do not
use
subvolid=
.
The reason this works is because rollback mechanism will not edit your fstab file, it will simply ensure that the correct snapshots are mounted in the respective locations.
Rollback operation
The command for rollback is safe, until you execute the script it generates.
This generates a rollback script:
Change the timestamp to one of your existing snapshots:
$ yabsnap rollback-gen 20230525081049 | tee ~/rollback.sh
Executing the script will actually cause the rollback to happen. It is recommended that you review the generated lines before rolling back.
Once you have reviewed the generated script for your rollback, you can then make it
executable
then run it:
# ~/rollback.sh
This will perform a rollback of all snapshots that were taken at the specified timestamp.
Comparison with Snapper
It was created to overcome some of the shortcomings of
Snapper
, specifically it does the following which are difficult or impossible to do in Snapper (as of writing):
custom destinations for backup
(related issue)
,
rollback for all configs (not just the default subvolume),
has integrated
pacman hook
support.
See also
Yabsnap github page
Yandex Disk

This article or section is a candidate for merging with
List of applications/Internet#Other synchronization clients
.
Notes:
Nothing specific to Arch here: the setup/commands are documented upstream. (Discuss in
Talk:Yandex Disk
)
Yandex.Disk
is a free cloud storage service created by Yandex that gives you access to your photos, videos and documents from any internet-enabled device.
The official Yandex.Disk console client lets you:
synchronize files and folders with your Disk,
get public links to files and folders,
customize folder syncing.
Installation
Install
the
yandex-disk
AUR
package. Note that it is a CLI client — there is no official GUI for it at the moment. For alternatives see
#Unofficial clients
.
To setup your proxy, user and local folder, enter
$ yandex-disk setup
Syncing will start after completing this step, now you are ready to use Yandex.Disk.
Commands
You can manage your folder using any file manager or console.
Full list of commands is available in
man yandex-disk
or using
$ yandex-disk --help
Here are some examples of use:
setup
— Launch the setup wizard.
start
— Launch the daemon and start syncing folders. The current sync status is recorded in the file
.sync/status
.
stop
— stop the daemon.
status
— show daemon status: sync status, errors, recently synced files, disk space status. If FILE is specified, the status for this file will be returned.
token
— receive OAuth token, encode and save it in a special file (by default
~/.config/yandex-disk/passwd
). If the options
-p
password
or
--password
password
are not specified, the password will be read from STDIN.
sync
— sync the folder and log out (if the daemon is running, wait for syncing to finish).
publish
— make the specified file/folder public and print the link to STDOUT. The item will be copied to the sync folder. Use the option
--overwrite
to rewrite existing items.
unpublish
— removes public access to the file/folder.
Unofficial clients
Ekstertera
— GUI client based on
Qt5
.
https://github.com/abbat/ekstertera
||
ekstertera
AUR
yandex-disk-indicator
— GUI panel indicator.
https://github.com/slytomcat/yandex-disk-indicator/
||
yandex-disk-indicator
AUR
ydcmd
— Console client written in
Python
.
https://github.com/abbat/ydcmd
||
ydcmd
AUR
See also
https://yandex.com/support/disk-desktop-linux/index.html