# CommandSection

title: CAVEATS
content:
<i>xdg-user-dir</i> primarily reports paths; it does not automatically create missing directories. Use <i>xdg-user-dirs-update</i> to ensure directories exist and are properly configured.<br>The <i>DIRECTORY_NAME</i> argument is case-sensitive (e.g., "DOWNLOAD" is valid, "download" is not).<br>Relies on the presence and correct format of the <i>~/.config/user-dirs.dirs</i> file. If this file is absent or malformed, default paths may be returned, or the command might not function as expected.


title: CONFIGURATION FILE
content:
The paths returned by <i>xdg-user-dir</i> are primarily configured in the user-specific file: <b>~/.config/user-dirs.dirs</b>. This file contains key-value pairs linking logical directory names to their absolute paths, for example: <br><b>XDG_DOWNLOAD_DIR="$HOME/Downloads"</b><br>Users can manually edit this file, though it is commonly managed and updated by the <i>xdg-user-dirs-update</i> command.


title: COMMON DIRECTORY NAMES
content:
The most frequently queried <i>DIRECTORY_NAME</i> values include: <br><b>DESKTOP</b>: The user's desktop directory.<br><b>DOWNLOAD</b>: The directory for downloaded files.<br><b>DOCUMENTS</b>: The directory for user documents.<br><b>MUSIC</b>: The directory for music files.<br><b>PICTURES</b>: The directory for image files.<br><b>VIDEOS</b>: The directory for video files.<br><b>TEMPLATES</b>: The directory for document templates.<br><b>PUBLICSHARE</b>: The directory for publicly shared files.


title: HISTORY
content:
<i>xdg-user-dir</i> is part of the <i>xdg-user-dirs</i> package, which originated from the FreeDesktop.org (now XDG) initiative. This initiative aims to standardize various aspects of the Linux desktop environment, including directory structures. The tool was developed to address the inconsistency of user directory locations across different desktop environments and distributions, providing a robust and portable way for applications to find common user directories since the early 2000s.


title: PARAMETERS
content:
<b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces an update, even if the user directories configuration file (<i>user-dirs.dirs</i>) is up to date. This can be useful for recreating missing directories or applying changes.<br><br>


title: DESCRIPTION
content:
<i>xdg-user-dirs-update</i> is a utility that creates and updates common user directories (like Desktop, Documents, Downloads, Music, Pictures, Public, Templates, Videos) in a user's home directory according to the XDG Base Directory Specification.<br><br>It reads configuration from <i>~/.config/user-dirs.dirs</i> and <i>~/.config/user-dirs.locale</i> to determine the paths and localized names of these directories. If a directory listed in <i>user-dirs.dirs</i> does not exist, <i>xdg-user-dirs-update</i> will create it. It is often run automatically on login or when the locale changes to ensure the user's environment is consistent and standard directories are available. This tool helps various applications and desktop environments find common user files in predictable locations.


title: CAVEATS
content:
This command typically runs automatically, and users rarely need to invoke it manually unless troubleshooting or forcing a refresh.<br><br>The actual directory names and locations are determined by the <i>~/.config/user-dirs.dirs</i> and <i>~/.config/user-dirs.locale</i> files. Modifying these files manually can affect the behavior of this command.<br><br>It does not move existing files if a directory's location changes; it only creates new directories.


title: CONFIGURATION FILES
content:
The behavior of <i>xdg-user-dirs-update</i> is primarily controlled by two files in the user's configuration directory:<br><ul><li><i>~/.config/user-dirs.dirs</i>: Defines the paths to the user's standard directories (e.g., <b>XDG_DOWNLOAD_DIR="$HOME/Downloads"</b>).</li><li><i>~/.config/user-dirs.locale</i>: Stores the locale used when the <i>user-dirs.dirs</i> file was last updated. If the system locale changes, this tool will attempt to update directory names to match the new locale.</li></ul>


title: ENVIRONMENT VARIABLES
content:
The paths defined in <i>user-dirs.dirs</i> are often used by applications that respect the XDG Base Directory Specification. While <i>xdg-user-dirs-update</i> creates these directories, applications might also read these paths from the <i>user-dirs.dirs</i> file directly or through helper utilities like <i>xdg-user-dir</i>.


title: HISTORY
content:
<i>xdg-user-dirs-update</i> is part of the <i>xdg-user-dirs</i> package, developed by Freedesktop.org. This initiative aims to standardize the location of user-specific data files and directories across different desktop environments on Linux and other Unix-like systems, thereby improving interoperability. It has become a common component in modern desktop environments like GNOME and KDE.


title: PARAMETERS
content:
<b>-toolkitoption <i>...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies standard X Toolkit command line options.<br><br><b>-page <i>number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts viewing the document at the specified page number.<br><br><b>-file <i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input <i>ditroff</i> file to be viewed. This is equivalent to providing <i>filename</i> as a positional argument.<br><br><b>-geometry <i>geometry</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial window geometry (size and position) for <i>xditview</i>.<br><br><b>-display <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to.<br><br><b>-background <i>color</i> / -bg <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the <i>xditview</i> window.<br><br><b>-foreground <i>color</i> / -fg <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground color, typically used for text elements like page numbers.<br><br><b>-font <i>font</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to use for text elements such as status messages and page numbers within the viewer.<br><br><b>-delay <i>milliseconds</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the delay in milliseconds between pages when automatically advancing through a document.<br><br><b>-printfile <i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file containing the shell command to be executed for printing the document.<br><br><b>-zoom <i>scale</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial zoom level for the document view (e.g., 0.5 for half size, 2.0 for double size).<br><br><b>-fullscreen</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the application in fullscreen mode, maximizing the viewing area.<br><br><b>-noshrink</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the document output from being shrunk to fit the window, potentially showing only a portion of the page.<br><br><b>-fitpage</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adjusts the view to fit the entire page within the current window size.<br><br><b>-magnifier</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a separate magnifier window that shows a magnified view of the area under the mouse cursor.<br><br><b>-magnifysize <i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the dimensions (widthxheight) of the magnifier window.<br><br><b>-magnifymult <i>mult</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the magnification factor for the magnifier window (e.g., 2 for double magnification).<br><br><b>-pager</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a page number dialog box, allowing direct navigation to any page.<br><br><b>-printer <i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the shell <i>command</i> to execute for printing the current document.<br><br><b>-status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a status line at the bottom of the window, often showing current page number or messages.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of <i>xditview</i> and then exits.<br><br><b>-debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debugging output, which can be useful for troubleshooting issues.<br><br>


title: DESCRIPTION
content:
<i>xditview</i> is a graphical utility for the X Window System that allows users to view files formatted by <i>ditroff</i> (Device Independent troff) or <i>groff</i>. It provides a visual representation of typeset documents, displaying text, images, and other elements as they would appear when printed on a specific device.<br><br>It's particularly useful for previewing documents created with the <i>troff</i>/<i>groff</i> typesetting system before sending them to a printer, offering features like page navigation, zooming, and basic printing capabilities directly from the X display.<br><br>As an older Motif-based application, its primary use case was for developers and users working extensively with the <i>troff</i>/<i>groff</i> suite to preview their manual pages, books, or other documents on a graphical workstation, ensuring layout and formatting correctness.


title: CAVEATS
content:
<i>xditview</i> is an older X11 utility that relies on Motif libraries, which might not be pre-installed or easily available on all modern Linux distributions. Its functionality for previewing documents has largely been superseded by more modern viewers that handle PostScript, PDF, or directly render <i>groff</i> output to common graphical formats, making it less commonly used today. Users might encounter installation challenges or compatibility issues on newer systems.


title: HISTORY
content:
<i>xditview</i> originated as part of the core X Window System distribution, specifically designed to complement the <i>troff</i> and <i>ditroff</i> typesetting tools. It provided the necessary graphical interface for previewing document output on X displays, which was crucial during the era when <i>troff</i>/<i>groff</i> was a primary method for creating documentation, including Unix manual pages and technical reports. Its development peaked alongside the widespread adoption of X11 workstations in the 1980s and 1990s, offering a visual alternative to printing draft copies or inspecting raw text output. While still available in some Xorg packages, its active development and widespread usage have diminished with the evolution of document formats and more versatile viewing technologies.


title: SYNOPSIS
content:
<i>xdotool</i> [--window &lt;WINDOW&gt;] [--delay &lt;MILLISECONDS&gt;] &lt;COMMAND&gt; [COMMAND_OPTIONS]<br><br><i>xdotool</i> typically takes a command followed by its specific options and arguments. Global options like <b>--window</b> and <b>--delay</b> can precede the command.


title: PARAMETERS
content:
<b>--window <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the window to operate on. <b><I>WINDOW</I></b> can be a window ID, <b>"focus"</b> for the currently focused window, <b>"active"</b> for the active window, or <b>"root"</b> for the root window.<br><br><b>--delay <MILLISECONDS></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a delay (in milliseconds) before executing a command.<br><br><b>help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of available commands and their usage.<br><br><b>version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>xdotool</i> version information.<br><br><b>mousemove <X> <Y></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Moves the mouse cursor to absolute screen coordinates <b><I>X</I></b> and <b><I>Y</I></b>.<br><br><b>mousemove_relative <X> <Y></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Moves the mouse cursor relative to its current position by <b><I>X</I></b> and <b><I>Y</I></b>.<br><br><b>click <BUTTON></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulates a mouse click. <b><I>BUTTON</I></b> is typically 1 (left), 2 (middle), 3 (right), 4 (scroll up), or 5 (scroll down).<br><br><b>mousedown <BUTTON></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Presses down a mouse button.<br><br><b>mouseup <BUTTON></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Releases a mouse button.<br><br><b>key <KEYNAME|KEYSEQUENCE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulates key presses. <b><I>KEYNAME</I></b> can be a single key (e.g., "a", "control", "Return") or a sequence (e.g., "control+c").<br><br><b>type <TEXT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Types a string of text, character by character.<br><br><b>getmouselocation</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current mouse coordinates and screen information.<br><br><b>windowfocus <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Brings the specified window into focus.<br><br><b>windowactivate <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates (raises and focuses) the specified window.<br><br><b>windowmove <WINDOW> <X> <Y></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Moves the specified window to screen coordinates <b><I>X</I></b> and <b><I>Y</I></b>.<br><br><b>windowsize <WINDOW> <WIDTH> <HEIGHT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resizes the specified window to <b><I>WIDTH</I></b> and <b><I>HEIGHT</I></b>.<br><br><b>windowminimize <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Minimizes the specified window.<br><br><b>windowmaximize <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maximizes the specified window.<br><br><b>windowrestore <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores the specified window from a minimized or maximized state.<br><br><b>getactivewindow</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the ID of the currently active window.<br><br><b>getwindowfocus</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the ID of the window currently in focus.<br><br><b>getwindowname <WINDOW></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the name (title) of the specified window.<br><br><b>search <OPTIONS> <QUERY></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for windows based on criteria like name, class, or PID, and prints their IDs. Common options include <b>--name</b>, <b>--class</b>, <b>--pid</b>.<br><br><b>sleep <SECONDS></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pauses execution for the specified number of <b><I>SECONDS</I></b>.<br><br>


title: DESCRIPTION
content:
<i>xdotool</i> is a powerful command-line tool designed to simulate keyboard input and mouse activity, and to perform various window management tasks in the X11 graphical environment. It interacts directly with the X server, allowing users to automate repetitive actions, create custom keyboard shortcuts, test applications, or manage windows from scripts. Its capabilities include moving and resizing windows, bringing windows to the foreground, sending arbitrary key presses or entire strings of text, and simulating mouse clicks and movements. By providing a programmatic interface to X11 interactions, <i>xdotool</i> becomes an essential utility for system administrators, developers, and power users looking to enhance their productivity through automation. It is commonly used in shell scripts for tasks like automating browser interactions, setting up development environments, or creating complex desktop workflows.


title: CAVEATS
content:
<ul><li><b>X11 Dependency:</b> <i>xdotool</i> works exclusively with the X Window System. It is not compatible with Wayland directly, requiring an XWayland compatibility layer to function in Wayland environments.</li><li><b>Security Risk:</b> As it can simulate user input, <i>xdotool</i> can be a security risk if misused or run with elevated privileges in untrusted scripts.</li><li><b>Window ID Volatility:</b> Window IDs are not persistent across sessions or even during some window manager operations, which can complicate long-running scripts.</li><li><b>Timing Issues:</b> Scripts may encounter race conditions if they don't account for delays in application response times, requiring careful use of the <b>--delay</b> option or the <b>sleep</b> command.</li><li><b>Keyboard Layout:</b> Key presses are interpreted based on the current X keyboard layout, which can lead to unexpected results if layouts change.</li></ul>


title: GLOBAL OPTIONS
content:
The <b>--window</b> and <b>--delay</b> options are global and can be used before any <i>xdotool</i> command. <b>--window</b> allows you to specify a target window for commands that would otherwise operate on the focused or active window. <b>--delay</b> introduces a pause before the command executes, useful for giving applications time to respond.


title: WINDOW SPECIFICATION
content:
Many <i>xdotool</i> commands accept a <b><I>WINDOW</I></b> argument. Besides numerical window IDs, <i>xdotool</i> supports special keywords like <b>"focus"</b> (current input focus), <b>"active"</b> (active window according to window manager), and <b>"root"</b> (the root window). The <b>search</b> command is invaluable for programmatically finding window IDs based on properties like title, class, or PID.


title: KEY NAMES
content:
For the <b>key</b> command, <i>xdotool</i> supports standard X keysym names (e.g., <b>Control_L</b>, <b>Alt_R</b>, <b>Return</b>, <b>BackSpace</b>) in addition to single characters. Multiple keys can be combined with <b>+</b> (e.g., <b>control+shift+a</b>).


title: HISTORY
content:
<i>xdotool</i> was initially developed by Jordan S. Hubbard and released in the mid-2000s as a successor or alternative to older X11 automation tools like `xte` and `xmacro`. It quickly gained popularity due to its robust feature set, ease of use, and ability to handle complex X11 interactions, including window management which was less comprehensively covered by its predecessors. Its design focused on providing a flexible and scriptable interface, making it a staple for Linux desktop automation and testing. Continuous development has ensured its compatibility with modern X11 environments, solidifying its position as a go-to tool for X11 scripting.


title: SYNOPSIS
content:
<b>xdpyinfo</b> [<i>-display &lt;displayname&gt;</i>] [<i>-queryExtensions</i>] [<i>-queryBigRequests</i>] [<i>-querySecurity</i>] [<i>-queryShm</i>] [<i>-queryXFree86-Misc</i>] [<i>-queryXFree86-VidMode</i>] [<i>-queryDPMI</i>] [<i>-version</i>] [<i>-help</i>]


title: PARAMETERS
content:
<b><i>-display &lt;displayname&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server display to connect to (e.g., <i>:0</i>, <i>hostname:0.0</i>). This overrides the <i>DISPLAY</i> environment variable.<br><br><b><i>-queryExtensions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether various X extensions are supported by the server. This is usually the default behavior unless specific queries are requested.<br><br><b><i>-queryBigRequests</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the BIG-REQUESTS extension, enabling large X protocol requests, is supported by the server.<br><br><b><i>-querySecurity</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the SECURITY extension for server-side access control and authentication is supported.<br><br><b><i>-queryShm</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the MIT-SHM (shared memory) extension, for efficient image transfer between client and server, is supported.<br><br><b><i>-queryXFree86-Misc</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the XFree86-Misc extension, offering various miscellaneous features specific to XFree86, is supported.<br><br><b><i>-queryXFree86-VidMode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the XFree86-VidMode extension, for changing video modes and adjusting display settings, is supported.<br><br><b><i>-queryDPMI</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports whether the DPMI (Display Power Management Signaling) extension is supported. <b>Note:</b> This extension is largely obsolete and may not be present in modern X servers.<br><br><b><i>-version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the program version information for <i>xdpyinfo</i> and exits immediately.<br><br><b><i>-help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a usage message detailing command options and exits.<br><br>


title: DESCRIPTION
content:
<i>xdpyinfo</i> is a fundamental command-line utility for the X Window System, designed to provide comprehensive details about the capabilities and configuration of a connected X server. Upon execution, it establishes a connection to the specified X display and outputs a rich array of technical data.<br><br>This includes essential information such as screen dimensions, available visual types (like color depths, pixel formats, and colormap classes), a list of supported X extensions (e.g., RANDR for screen resizing, GLX for OpenGL rendering, Xinerama for multi-head setups, or MIT-SHM for shared memory), configured font paths, and server-specific details like vendor information and release version. Furthermore, it can report on keyboard and pointer capabilities.<br><br><i>xdpyinfo</i> serves as an invaluable diagnostic tool for troubleshooting display-related issues, verifying graphics driver installations, debugging X applications, and understanding the precise rendering environment. It empowers users and developers to quickly ascertain which X features and configurations are available, which is crucial for ensuring application compatibility and optimal performance within a specific X server setup.


title: CAVEATS
content:
Some extensions (e.g., DPMI, XFree86-*) are historical and may not be supported by modern X servers, often leading to 'no such extension' messages in the output.<br><br>The default output of <i>xdpyinfo</i> is very verbose, containing a large amount of technical detail. Users frequently pipe its output to tools like <i>less</i> for pagination or <i>grep</i> for filtering specific information (e.g., <i>xdpyinfo | grep "GLX"</i>).<br><br><i>xdpyinfo</i> requires a running X server and an active display connection to function correctly. Without these, it will fail to connect.


title: TROUBLESHOOTING AID
content:
<i>xdpyinfo</i> is often the first tool to use when diagnosing X-related issues, such as unexpected resolutions, graphics driver problems, or application compatibility. By examining the server's reported capabilities, users can verify whether required features (e.g., specific visual depths or extensions) are available.


title: SCRIPTABILITY
content:
Due to its structured output, <i>xdpyinfo</i> is highly scriptable. System administrators and developers often combine it with other command-line utilities like <i>grep</i>, <i>awk</i>, or <i>sed</i> to extract specific configuration details for automated checks, logging, or dynamic environment setup.


title: HISTORY
content:
<i>xdpyinfo</i> is a foundational utility that has been an integral part of the X Window System since its inception in the mid-1980s. Its development has closely mirrored the evolution of the X protocol, adapting to new extensions and features introduced over the decades. As X passed through different development phases (e.g., from XFree86 to X.Org), <i>xdpyinfo</i> consistently provided a standardized command-line interface for querying server capabilities, remaining a stable and essential tool for understanding the underlying X server environment.


title: PARAMETERS
content:
<b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables <b>verbose</b> output, showing more detailed information about the DRI configuration, including capabilities and extensions.<br><br><b><i>-h</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a <b>help</b> message and usage instructions for the command, then exits.<br><br><b><i>-display &lt;display&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X <b>display</b> to connect to. This is useful when working with multiple X servers or remote displays (e.g., <code>:0</code>, <code>localhost:0.0</code>).<br><br>


title: DESCRIPTION
content:
<code>xdriinfo</code> is a command-line utility used to query and display detailed information about the <b>Direct Rendering Infrastructure (DRI)</b> configuration of an X server. <br>DRI provides a direct path for applications to access graphics hardware, significantly improving performance for 3D graphics. This tool is valuable for diagnosing graphics driver issues, verifying DRI setup, and understanding the capabilities of the installed graphics hardware and its associated driver (e.g., <I>OpenGL version, vendor, renderer, maximum texture sizes, extensions supported</I>). <br>It fetches data directly from the X server's DRI extension, making it an powerful diagnostic tool for graphics-related problems and debugging the rendering pipeline.


title: CAVEATS
content:
Requires a running X server with the <b>DRI extension</b> enabled; otherwise, it will report an error. <br>The exact output can vary significantly based on the specific graphics hardware, driver version, and X server configuration. <br>May require appropriate user permissions to access the X display or DRI resources.


title: <I>DRI AND GRAPHICS DRIVERS</I>
content:
<I><b>DRI (Direct Rendering Infrastructure)</b> is a critical framework in Linux graphics that enables direct access to graphics hardware from applications, bypassing the X server for many rendering operations. This direct path is essential for achieving high performance in 3D applications. <br><code>xdriinfo</code> plays a key role in verifying if DRI is correctly configured and revealing the specific capabilities that your graphics driver and hardware expose through this interface. It's an indispensable tool for diagnosing and understanding the health and features of your OpenGL/Vulkan setup.</I>


title: HISTORY
content:
<code>xdriinfo</code> is an integral part of the <I>Mesa 3D Graphics Library utilities</I> (often bundled in the `mesa-demos` package). <br>Mesa is a foundational open-source implementation of graphics APIs like OpenGL and Vulkan. <br>The command has evolved alongside the DRI standard and Mesa's development over many years, consistently serving its purpose of providing diagnostic insight into the underlying graphics stack and <b>Direct Rendering Infrastructure</b> setup.


title: SYNOPSIS
content:
<b>xe</b> [<i>global-options</i>] <i>&lt;object-class&gt;-&lt;action&gt;</i> [<i>parameter=value...</i>]<br><b>xe</b> [<i>global-options</i>] <i>(for interactive mode)</i>


title: PARAMETERS
content:
<b>--minimal</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses header and footer, showing only essential output (e.g., UUIDs).<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses non-essential output, only showing errors.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases verbosity of output, showing more details.<br><br><b>--output-xml</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats command output as XML.<br><br><b>--csv</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats command output as Comma Separated Values (CSV).<br><br><b>--error-on-no-op</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exits with an error code if an operation performs no action.<br><br><b>--pretty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats output for improved human readability, often used with list commands.<br><br>


title: DESCRIPTION
content:
<b>xe</b> is the primary command-line interface (CLI) for managing XenServer (now Citrix Hypervisor) environments. It provides a comprehensive set of commands to interact with the hypervisor and its virtualized resources. Users can manage virtual machines (VMs), storage repositories (SRs), networks, hosts, and resource pools. <b>xe</b> communicates directly with the XenServer management API, enabling administrators to perform operations such as creating, starting, stopping, and migrating VMs, configuring network interfaces, attaching and detaching storage, and monitoring system status. Its robust and scriptable nature makes it an essential tool for automating routine tasks, performing complex deployments, and troubleshooting issues within XenServer deployments. While powerful, <b>xe</b> typically operates on a XenServer control domain (Dom0) or from a remote management workstation with appropriate credentials.


title: CAVEATS
content:
<b>xe</b> is specific to XenServer/Citrix Hypervisor and is not a general-purpose Linux command found on all distributions.<br>It requires a connection to a XenServer pool master or standalone host.<br>Operations may require specific roles or permissions.<br>Its extensive command set can be complex for new users.<br>Output often requires parsing for scripting, especially when dealing with UUIDs.


title: INTERACTIVE MODE
content:
<b>xe</b> can be run in an interactive shell mode by simply typing <b>xe</b> and pressing Enter. This provides tab completion for subcommands and parameters, making it easier to explore and execute commands efficiently.


title: OBJECT-ACTION PARADIGM
content:
Most <b>xe</b> commands follow an <i>object-class-action</i> structure (e.g., <b>vm-list</b>, <b>host-shutdown</b>, <b>vif-create</b>). This consistent naming convention helps users predict and construct commands for various management tasks.


title: UUIDS AND IDENTIFIERS
content:
Many <b>xe</b> commands operate on Universal Unique Identifiers (UUIDs) for objects like VMs, hosts, and SRs. Commands like <b>list</b> are commonly used to retrieve these UUIDs before performing actions on specific objects.


title: HISTORY
content:
The <b>xe</b> command-line interface has been a core component of XenServer (originally developed by XenSource, later acquired by Citrix) since its early versions. It was designed to provide a powerful and scriptable way to manage the Xen hypervisor and the entire virtualization stack. Over the years, as XenServer evolved into Citrix Hypervisor, <b>xe</b> has consistently served as the primary administrative interface, with new commands and parameters added to support new features and functionalities in the platform, maintaining its object-action paradigm.


title: PARAMETERS
content:
<b>--new-window</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a new, empty <I>xed</I> window, independent of existing ones.<br><br><b>--new-document</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new, empty document in the current or a new window.<br><br><b>--display=<I>DISPLAY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to use for launching the application (e.g., :0.0).<br><br><b>--print</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the specified files. This option typically invokes a graphical print dialog.<br><br><b>--encoding=<I>ENCODING</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the character encoding to be used when opening files listed on the command line (e.g., UTF-8, ISO-8859-1). If not specified, <I>xed</I> attempts to auto-detect.<br><br><b>--preserve-encoding</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <I>xed</I> to attempt to preserve the document's original encoding when saving, if possible.<br><br><b>--list-encodings</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a list of all character encodings supported by <I>xed</I> to the standard output and then exits.<br><br><b>--disable-plugins</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches <I>xed</I> without loading any of its configured plugins, which can be useful for troubleshooting or for a minimalist editing experience.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for <I>xed</I> and then exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message detailing common command-line options for <I>xed</I> and exits.<br><br>


title: DESCRIPTION
content:
The <b>xed</b> command launches the official text editor for the <I>Cinnamon</I> desktop environment. It's a user-friendly and lightweight graphical text editor, designed for general-purpose text editing tasks. Originating as a fork of <I>Pluma</I> (MATE's text editor), which itself is a fork of <I>Gedit</I> (GNOME's text editor), <I>xed</I> inherits a familiar interface and many essential features. These include syntax highlighting for a wide array of programming languages and markup formats, a tabbed document interface for managing multiple files, and robust search and replace functionalities. <I>xed</I> also supports spell checking, unlimited undo/redo, and a plugin system for extending its capabilities. It aims to provide a stable and well-integrated editing experience within the <I>Cinnamon</I> ecosystem.


title: CAVEATS
content:
<b>xed</b> is a graphical user interface (GUI) application designed to run within an X server environment (e.g., a desktop session). It cannot be run directly from a pure text-mode terminal without an active display server. While it supports opening multiple files and tabs, for very large files or complex programming projects requiring advanced debugging or code completion, users might find more specialized Integrated Development Environments (IDEs) or feature-rich text editors more suitable.


title: PLUGIN SYSTEM
content:
<b>xed</b> features a robust plugin system that allows users to extend its core functionality without modifying the main application. Popular plugins include those for snippets management, integration with external tools, a file browser pane for easy navigation, and document statistics. Plugins can be enabled or disabled via the editor's graphical preferences dialog, enhancing its versatility.


title: CONFIGURATION
content:
Beyond its accessible graphical preferences, <b>xed</b>'s behavior and appearance can be extensively configured through <I>dconf</I> settings. This allows advanced users to fine-tune various aspects, such as default encoding for new files, tab and indentation behavior, interface elements, and even custom syntax highlighting profiles, often manageable via tools like <I>dconf-editor</I>.


title: HISTORY
content:
<b>xed</b> serves as the default text editor for the <I>Cinnamon</I> desktop environment, playing a crucial role in its user experience. Its lineage traces back through <I>Pluma</I>, the <I>MATE</I> desktop's text editor, which itself is a direct fork of <I>Gedit</I>, the default editor for the <I>GNOME</I> desktop. This heritage means <I>xed</I> benefits from years of development in its upstream projects, inheriting a stable codebase and a feature set familiar to users of <I>Gedit</I> and <I>Pluma</I>. The project was specifically forked and adapted to ensure seamless integration and consistent development with <I>Cinnamon</I>'s release cycles, providing a native and cohesive text editing solution for the environment.


title: PARAMETERS
content:
<b>-display <display></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server display to connect to.<br><br><b>-geometry <geometry></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial size and position of the editor window (e.g., <i>80x25+100+100</i>).<br><br><b>-iconic</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the editor window in an iconified (minimized) state.<br><br><b>-font <font></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the font to be used for displaying text in the editor.<br><br><b>-fg <color></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground color of the text.<br><br><b>-bg <color></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the editor window.<br><br><b>-borderwidth <width></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the width of the border around the text editing area.<br><br><b>-title <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the title string for the editor's window.<br><br><b>-name <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the application name, used for resource lookups.<br><br><b>-xrm <resource_string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes a specific X resource string to the application (e.g., <i>'Xedit*font: 8x13'</i>).<br><br><b>-selectMode <mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls how text selection works (e.g., <i>char</i>, <i>word</i>, <i>line</i>).<br><br><b>-editMode <mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default editing mode (e.g., <i>insert</i>, <i>overwrite</i>).<br><br><b>-printCommand <command></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an external command to use for printing selected text.<br><br><b>-loadFromFile <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads the specified file upon startup. Alternative to just providing a filename argument.<br><br><b>-saveToFile <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the editor's content to the specified file upon shutdown.<br><br><b>-Wl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables word wrapping at the left margin.<br><br><b>-Wr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables word wrapping at the right margin.<br><br><b>-C</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the feature to copy selection to the X clipboard (as opposed to primary selection).<br><br>


title: DESCRIPTION
content:
<b>xedit</b> is a basic, lightweight text editor specifically designed for the X Window System. It provides fundamental text editing capabilities within a graphical environment, often serving as a default or minimal editor for X11 distributions. While it lacks the advanced features, extensibility, and power of modern editors like Emacs or Vim, it is perfectly suited for quick edits of small configuration files, notes, or scripts. Its user interface is straightforward, typically featuring a text area, a basic menu bar, and common edit functions accessible via mouse and keyboard shortcuts, often resembling Emacs keybindings. <b>xedit</b> is built using the X Athena Widgets (Xaw) library, contributing to its simplicity and historical significance as a foundational X application. It primarily relies on X resources for customization, allowing users to configure aspects like fonts, colors, and default behaviors through <i>.Xresources</i> or <i>.Xdefaults</i> files.


title: CAVEATS
content:
<i>xedit</i> is a very basic editor and lacks many features found in modern text editors, such as syntax highlighting, multiple buffers/tabs, advanced search and replace, or plugin support. It may not handle very large files efficiently and its user interface is minimal, relying heavily on traditional X Window System conventions and X resources for configuration. Its development has largely ceased, and it is primarily maintained for historical compatibility within X.Org.


title: KEYBOARD SHORTCUTS
content:
<i>xedit</i> often defaults to Emacs-like keybindings, providing a familiar experience for users accustomed to Emacs. Common shortcuts include <i>Ctrl-A</i> for beginning of line, <i>Ctrl-E</i> for end of line, <i>Ctrl-K</i> for cutting a line, <i>Ctrl-Y</i> for pasting, and standard X selection mechanisms (select with mouse, middle-click to paste).


title: X RESOURCES
content:
Customization of <i>xedit</i> is primarily done through X resources. Users can define default fonts, colors, border widths, and other behaviors by setting resources in their <i>.Xdefaults</i> or <i>.Xresources</i> files, typically prefixed with <i>Xedit*</i> (e.g., <i>Xedit*font: fixed</i>).


title: HISTORY
content:
<i>xedit</i> has been a fundamental component of the X Window System since its early days. It was developed as a simple, graphical text editor to demonstrate and provide basic functionality within the X environment. Being built upon the X Athena Widgets (Xaw) library, it reflects the architectural simplicity of early X applications. While it never evolved into a full-featured editor like Emacs or Vim, its enduring presence in X.Org distributions highlights its role as a stable, minimalist editor suitable for environments where larger dependencies are undesirable or for quick, casual text manipulation.


title: SYNOPSIS
content:
<b>xelatex</b> [<i>OPTION</i>]... [<i>FILE</i>...]<br>or: <b>xelatex</b> [<i>OPTION</i>]... <b>\command</b><br>or: <b>xelatex</b> [<i>OPTION</i>]... <b>&</b><i>FORMAT</i> [<i>FILE</i>...]


title: PARAMETERS
content:
<b><b>-output-directory=<DIR></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write all output files to the specified directory <I>DIR</I>.<br><br><b><b>-interaction=<MODE></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the interaction mode. Common modes include <I>batchmode</I> (no user interaction), <I>nonstopmode</I> (process without stopping for errors), <I>scrollmode</I>, and <I>errorstopmode</I> (stop on first error).<br><br><b><b>-jobname=<NAME></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <I>NAME</I> for all output files (e.g., <I>NAME.pdf</I>, <I>NAME.log</I>).<br><br><b><b>-shell-escape</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <I>\write18</I> command, allowing execution of arbitrary shell commands from the <I>LaTeX</I> document. This is a security risk.<br><br><b><b>-no-shell-escape</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable the <I>\write18</I> command, preventing execution of external commands. This is the default and recommended for security.<br><br><b><b>-halt-on-error</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately upon encountering the first error during compilation.<br><br><b><b>-file-line-error</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print error messages in the format <I>file:line:error</I>, which is useful for integration with text editors.<br><br><b><b>-recorder</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the filename recorder, which creates a <I>.fls</I> file listing all input and output files used during compilation.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version information of <I>xelatex</I>.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message with available options.<br><br><b><b>-synctex=<0|1></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable (<I>1</I>) or disable (<I>0</I>) <I>SyncTeX</I> support, allowing synchronization between source and output <I>PDF</I>.<br><br><b><b>-output-format=<FORMAT></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file format, e.g., <I>pdf</I> (default) or <I>dvi</I>.<br><br>


title: DESCRIPTION
content:
<i>xelatex</i> is a powerful program that compiles <I>LaTeX</I> source files into high-quality typesetting output, typically <I>PDF</I>. It is built upon the <I>XeTeX</I> typesetting engine, which is an extension of Donald Knuth's original <I>TeX</I> system. What sets <I>xelatex</I> apart is its direct support for <B>Unicode (UTF-8) input</B>, allowing users to easily work with a wide range of languages and scripts, including those with complex typographic requirements, without the need for intricate encoding setups.<br><br>Furthermore, <I>xelatex</I> provides direct access to <B>system fonts</B>, including modern <I>OpenType</I> and <I>TrueType</I> fonts, leveraging their advanced typographic features such as ligatures, kerning, small caps, and alternative glyphs. This eliminates the need for specialized font packages and conversions often required by traditional <I>LaTeX</I> compilers, greatly simplifying font management. It also handles modern graphics formats like <I>PNG</I>, <I>JPEG</I>, and <I>PDF</I> natively.<br><br>While <I>pdflatex</I> remains popular, <I>xelatex</I> is often preferred for documents requiring specific commercial fonts, advanced typographic control, or support for non-Latin scripts. It usually outputs <I>PDF</I> files directly, making it a comprehensive solution for creating professional-grade documents. It is a core component of major <I>TeX</I> distributions like <I>TeX Live</I> and <I>MiKTeX</I>.


title: CAVEATS
content:
While powerful, <I>xelatex</I> has some considerations:<br><ul><li><I><b>Package Compatibility:</b></I> Older or highly specialized <I>LaTeX</I> packages might not be fully compatible with <I>xelatex</I> and may require alternatives (e.g., <I>fontspec</I> for font handling) or specific workarounds.</li><li><I><b>Font Availability:</b></I> Since <I>xelatex</I> relies on system fonts, documents may not compile identically on different systems if the required fonts are not installed or have different versions. Embedding fonts in the <I>PDF</I> can mitigate this.</li><li><I><b>Performance:</b></I> For extremely large documents with complex font usage, compilation might be slightly slower compared to <I>pdflatex</I> due to the advanced font rendering capabilities.</li><li><I><b>Graphics Drivers:</b></I> Sometimes, issues can arise with certain graphics drivers or older systems when rendering complex <I>OpenType</I> features.</li></ul>


title: KEY PACKAGES FOR XELATEX
content:
For effective use of <I>xelatex</I>, the <B>fontspec</B> package is crucial. It provides commands like <I>\setmainfont</I>, <I>\setsansfont</I>, and <I>\setmonofont</I> to easily select and configure system fonts. The <B>xunicode</B> package (often loaded by <I>fontspec</I>) provides <I>Unicode</I> character definitions, ensuring broad character support.


title: OUTPUT FILES
content:
When you compile a <I>.tex</I> file, <I>xelatex</I> generates several auxiliary files in addition to the <I>.pdf</I> (or <I>.dvi</I>) output. These include: <I>.log</I> (log file), <I>.aux</I> (auxiliary data for cross-referencing), <I>.toc</I> (table of contents), <I>.lof</I> (list of figures), <I>.lot</I> (list of tables), <I>.fls</I> (file list, if <I>-recorder</I> is used), and potentially others depending on the packages used.


title: HISTORY
content:
The <I>XeTeX</I> engine, which <I>xelatex</I> leverages, was primarily developed by <B>Jonathan Kew</B> starting in 2004. Its initial goal was to provide a direct way to use <I>Unicode</I> and modern system fonts (like <I>OpenType</I> and <I>TrueType</I>) within the <I>TeX</I> typesetting system, features that were challenging or impossible with traditional <I>pdfTeX</I>.<br><br>The <I>xelatex</I> command essentially provides the <I>LaTeX</I> macro layer on top of the <I>XeTeX</I> engine, making these advanced capabilities accessible to <I>LaTeX</I> users. It quickly gained traction among users needing support for non-Latin scripts, advanced typography, and direct access to their system's installed fonts, becoming a standard component in major <I>TeX</I> distributions by the late 2000s.


title: SEE ALSO
content:
<b>latex</b>(1), <b>pdflatex</b>(1), <b>lualatex</b>(1), <b>tex</b>(1), <b>dvips</b>(1), <b>dvipdfm</b>(1)


title: SYNOPSIS
content:
<b><i>Xephyr</i></b><i> [<br><b>-screen</b> <</i><b><i>width</i></b><i>>x<</i><b><i>height</i></b><i>>[+<</i><b><i>x</i></b><i>>+<</i><b><i>y</i></b><i>>]<br><b>-resizeable</b><br><b>-fullscreen</b><br><b>-host-cursor</b><br><b>-title</b> <</i><b><i>name</i></b><i>><br><b>-dpi</b> <</i><b><i>value</i></b><i>><br><b>-composite</b><br><b>-br</b><br><b>-soft-cursor</b><br><b>-hw_cursor</b><br><b>-extension</b> <</i><b><i>ext_name</i></b><i>><br><b>-terminate</b><br><b>-logfile</b> <</i><b><i>file</i></b><i>><br><b>-nolisten</b> <</i><b><i>transport</i></b><i>><br><b>-listen</b> <</i><b><i>transport</i></b><i>><br><b>-retro</b><br><b>-no-resize</b><br><b>-verbose</b><br><b>-quiet</b><br>...]<br>[<</i><b><i>:display_number</i></b><i>>]</i>


title: PARAMETERS
content:
<b><b>-screen</b> <<i>width</i>>x<<i>height</i>>[+<<i>x</i>>+<<i>y</i>>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the initial screen geometry (width, height) and optional position relative to the host display.</i><br><br><b><b>-resizeable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Allows the </i><b><i>Xephyr</i></b><i> window to be resized by the host window manager.</i><br><br><b><b>-fullscreen</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Launches </i><b><i>Xephyr</i></b><i> in full-screen mode, taking over the entire host screen.</i><br><br><b><b>-host-cursor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Uses the host system's cursor theme instead of </i><b><i>Xephyr</i></b><i>'s own cursor.</i><br><br><b><b>-title</b> <<i>name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the title of the </i><b><i>Xephyr</i></b><i> window on the host display.</i><br><br><b><b>-dpi</b> <<i>value</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the dots per inch (</i><b><i>DPI</i></b><i>) for the </i><b><i>Xephyr</i></b><i> display.</i><br><br><b><b>-composite</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables the </i><b><i>Composite extension</i></b><i>, allowing for modern desktop effects within </i><b><i>Xephyr</i></b><i>.</i><br><br><b><b>-br</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets a black background for the root window.</i><br><br><b><b>-soft-cursor</b> (or <b>-sw_cursor</b>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces software cursor rendering.</i><br><br><b><b>-hw_cursor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces hardware cursor rendering (default if available).</i><br><br><b><b>-extension</b> <<i>ext_name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables a specific </i><b><i>X extension</i></b><i> by name.</i><br><br><b><b>-terminate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Causes the server to terminate when the last client disconnects.</i><br><br><b><b>-logfile</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Redirects server messages and errors to the specified log file.</i><br><br><b><b>-nolisten</b> <<i>transport</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prevents the server from listening for connections on the specified transport (e.g., </i><b><i>tcp</i></b><i>).</i><br><br><b><b>-listen</b> <<i>transport</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces the server to listen for connections on the specified transport (e.g., </i><b><i>tcp</i></b><i>).</i><br><br><b><b>-retro</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Presents a 'retro' appearance for the cursor and font rendering (e.g., monochrome).</i><br><br><b><b>:display_number</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>The display number for the nested </i><b><i>X server</i></b><i> (e.g., </i><b><i>:1</i></b><i>, </i><b><i>:2</i></b><i>). If not specified, </i><b><i>Xephyr</i></b><i> tries to find a free one.</i><br><br>


title: DESCRIPTION
content:
<b><i>Xephyr</i></b><i> is a lightweight, fully functional </i><b><i>X server</i></b><i> that operates within a window of an existing </i><b><i>X display</i></b><i>. Based on the </i><b><i>KDrive</i></b><i> architecture, it provides an isolated </i><b><i>X environment</i></b><i>, acting as both an </i><b><i>X server</i></b><i> and an </i><b><i>X client</i></b><i> simultaneously. This unique capability makes it an invaluable tool for developers and testers.<br><br>Users can run an entire </i><b><i>desktop environment</i></b><i>, a </i><b><i>window manager</i></b><i>, or individual </i><b><i>X applications</i></b><i> inside the </i><b><i>Xephyr</i></b><i> window without affecting the host </i><b><i>X session</i></b><i>. It's particularly useful for testing new </i><b><i>display managers</i></b><i>, configurations, or experimental software in a sandboxed environment. By default, </i><b><i>Xephyr</i></b><i> creates a new </i><b><i>X display</i></b><i> (e.g., </i><b><i>:1</i></b><i>, </i><b><i>:2</i></b><i>), and applications launched within its context connect to this nested display. It supports various screen sizes and resolutions, which can be specified at launch. Despite being a nested server, it offers considerable performance for most development and testing scenarios, making it a robust alternative to a full </i><b><i>virtual machine</i></b><i> for </i><b><i>X</i></b><i>-specific tasks.</i>


title: CAVEATS
content:
<b><i>Xephyr</i></b><i>, while robust, has a few caveats:<br></i><b><i>Performance:</i></b><i> While generally efficient for testing, it operates as a nested display server within another </i><b><i>X session</i></b><i>. This means graphics-intensive applications or games requiring direct hardware acceleration may experience reduced performance compared to a native </i><b><i>X server</i></b><i>.<br></i><b><i>Input Redirection:</i></b><i> All keyboard and mouse input is captured by the </i><b><i>Xephyr</i></b><i> window when it has focus. Certain global hotkeys or special key combinations (e.g., </i><b><i>Ctrl+Alt+Fx</i></b><i> to switch VTs) might not be passed through correctly or could affect the host system instead of the nested one.<br></i><b><i>Clipboard Sharing:</i></b><i> Seamless clipboard sharing between the host and nested </i><b><i>Xephyr</i></b><i> environment can sometimes be inconsistent or require additional clipboard managers running in both sessions.</i>


title: TYPICAL USAGE
content:
<i>To start a </i><b><i>Xephyr</i></b><i> session, specify a display number and optional geometry, e.g., </i><b><i>Xephyr :1 -screen 1024x768</i></b><i>. Once started, you can launch applications within this nested environment by setting the </i><b><i>DISPLAY</i></b><i> environment variable, for example: </i><b><i>DISPLAY=:1 xterm</i></b><i> or </i><b><i>DISPLAY=:1 startxfce4</i></b><i>.</i>


title: DEBUGGING AND DEVELOPMENT
content:
<b><i>Xephyr</i></b><i> is an excellent tool for debugging </i><b><i>X</i></b><i> applications, </i><b><i>window managers</i></b><i>, or </i><b><i>desktop environments</i></b><i> without risking your primary </i><b><i>X session</i></b><i>. Its isolation allows for crash testing and configuration changes in a safe sandbox.</i>


title: HISTORY
content:
<b><i>Xephyr</i></b><i> emerged as part of the </i><b><i>KDrive</i></b><i> project, an initiative within the </i><b><i>X.Org</i></b><i> development efforts to create a smaller, more modular, and embeddable </i><b><i>X server</i></b><i>. </i><b><i>KDrive</i></b><i>'s design focused on reducing memory footprint and improving portability, making it ideal for devices with limited resources. </i><b><i>Xephyr</i></b><i> specifically leverages this architecture to run an </i><b><i>X server</i></b><i> inside a window of another </i><b><i>X server</i></b><i>, a capability that has proven invaluable for testing and development since its inception. It has been actively maintained and integrated into the main </i><b><i>X.Org</i></b><i> server distribution.


title: SEE ALSO
content:
<b><i>X(7)</i></b><i> - The base </i><b><i>X server</i></b><i>.</i>, <b><i>Xorg(1)</i></b><i> - The primary </i><b><i>X.Org X server</i></b><i>.</i>, <b><i>Xvfb(1)</i></b><i> - A virtual framebuffer </i><b><i>X server</i></b><i> for headless operations.</i>, <b><i>xinit(1)</i></b><i> - Used to manually start an </i><b><i>X session</i></b><i>.</i>, <b><i>startx(1)</i></b><i> - A script to start an </i><b><i>X session</i></b><i>.


title: PARAMETERS
content:
<b><b>-screen</b> <i>WxH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial screen size (width x height) of the <i>xephyr</i> window. For example, <b>-screen 800x600</b>.<br><br><b><b>-resizeable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows the <i>xephyr</i> window to be resized by the host window manager, which in turn resizes the X screen within <i>xephyr</i>.<br><br><b><b>-fullscreen</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <i>xephyr</i> in fullscreen mode, taking over the entire host display.<br><br><b><b>-host-cursor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the host X server's cursor for the nested display, rather than drawing its own. This can improve cursor responsiveness.<br><br><b><b>-no-host-grab</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>xephyr</i> from grabbing input (keyboard and mouse) from the host X server. Useful when you want to switch focus easily without an explicit key combination.<br><br><b><b>-composite</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the Composite extension in the nested server. This is often required for modern desktop environments and applications that use transparency and visual effects.<br><br><b><b>-depth</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default color depth for the <i>xephyr</i> display, e.g., <b>-depth 24</b>.<br><br><b><b>-keybd</b> <i>KEYBOARD_DEVICE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a specific keyboard input device to use, bypassing default auto-detection.<br><br><b><b>-mouse</b> <i>MOUSE_DEVICE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a specific mouse input device to use, bypassing default auto-detection.<br><br><b><b>-geometry</b> <i>GEOMETRY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial position and size of the <i>xephyr</i> window on the host display, e.g., <b>-geometry 800x600+100+50</b>.<br><br><b><i>:displaynum</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the display number for the nested X server. For example, <b>:1</b> for display 1.<br><br>


title: DESCRIPTION
content:
<i>xephyr</i> is a display server that runs as a client of another display server. It creates a new X display within a window on an existing X session. This provides an isolated environment, ideal for safely testing X applications, window managers, or entire desktop environments without affecting the main desktop session. It is often used by developers to debug X clients or experiment with different configurations. Unlike its predecessor <i>Xnest</i>, <i>xephyr</i> is based on KDrive, offering better performance and more modern X extensions, including Composite, making it a more versatile tool for contemporary X development and testing.


title: CAVEATS
content:
While <i>xephyr</i> is excellent for testing, it has limitations:<br><b>Performance:</b> May not match a native X server, especially for intensive graphical applications or games.<br><b>Hardware Access:</b> Direct hardware access is not available; it relies on the host X server for rendering.<br><b>Input Grabbing:</b> Behavior can sometimes be tricky; ensure <b>-no-host-grab</b> or the grab-release key (Ctrl+Shift) is understood.<br><b>Extension Support:</b> Some specific X extensions or driver features might not be fully supported or behave identically to a native setup.


title: TYPICAL USAGE SCENARIOS
content:
<i>xephyr</i> is useful for:<br><b>Testing Desktop Environments and Window Managers:</b> Safely try out new desktop environments (e.g., GNOME, KDE, Xfce) or window managers (e.g., i3, AwesomeWM) without logging out of your current session.<br><b>X Application Development:</b> Debug X applications in an isolated environment, ensuring they behave correctly on a 'clean' X display.<br><b>Sandboxing:</b> Run untrusted X clients in a confined display, preventing them from interacting with your main desktop or sensitive data.<br><b>Demonstrations:</b> Easily show off an application or environment without needing a separate machine or virtual machine.


title: INPUT GRABBING
content:
By default, when the mouse cursor enters the <i>xephyr</i> window, <i>xephyr</i> grabs all keyboard and mouse input. To release the grab and return control to the host X server, press <b>Ctrl+Shift</b> (by default). If you use the <b>-no-host-grab</b> option, <i>xephyr</i> will not grab input, and you can switch between the host and nested display simply by moving the mouse cursor.


title: HISTORY
content:
<i>xephyr</i> emerged as part of the X.Org project, developed as a modern successor and alternative to the older <i>Xnest</i> utility. Its development was significantly influenced by the KDrive architecture, which aimed to provide a more modular, lightweight, and embeddable X server implementation. This foundation allowed <i>xephyr</i> to offer better performance, support for contemporary X extensions (like Composite), and more robust input handling compared to its predecessor, making it a preferred choice for developers and testers in the X ecosystem.


title: PARAMETERS
content:
<b>-output-directory=<I>DIR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output files (DVI, PDF, log, etc.) into the specified directory <I>DIR</I>.<br><br><b>-no-file-line-error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress the usual file:line:error messages. Useful for tools that parse error output.<br><br><b>-halt-on-error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately upon encountering the first error during compilation.<br><br><b>-interaction=<I>MODE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the interaction mode. Common modes include <I>batchmode</I> (no user interaction), <I>nonstopmode</I> (continue without stopping for errors), <I>scrollmode</I>, and <I>errorstopmode</I> (default).<br><br><b>-jobname=<I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <I>NAME</I> for the output files (DVI/PDF, log). By default, it's derived from the input filename.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print version information of XeTeX and exit.<br><br><b>-ini</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start XeTeX in INI mode, used for creating format files (e.g., xelatex.fmt).<br><br><b>-fmt=<I>FORMAT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the specified <I>FORMAT</I> file instead of the default or the one determined by the input filename.<br><br><b>-shell-escape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <I>\write18</I> command, allowing TeX to execute external system commands. This is a potential security risk.<br><br><b>-no-shell-escape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable the <I>\write18</I> command, preventing TeX from executing external system commands. This is the default behavior in modern TeX distributions.<br><br><b>-output-format=<I>FORMAT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format. Can be <I>dvi</I> or <I>pdf</I>. Default is typically PDF.<br><br>


title: DESCRIPTION
content:
<b>XeTeX</b> is a typesetting engine based on TeX, designed to bridge the gap between traditional TeX and modern operating system technologies. It provides direct support for <I>Unicode</I> input and allows the use of <I>OpenType</I> and <I>AAT</I> system fonts directly without special configurations. This makes it particularly suitable for multilingual documents, complex scripts, and advanced typographic features. XeTeX processes source files (typically .tex) and outputs either a Device Independent (DVI) file or a Portable Document Format (PDF) file, embedding the necessary fonts directly. It is a key component of modern TeX distributions like TeX Live and MiKTeX.


title: CAVEATS
content:
The <I>-shell-escape</I> option allows the execution of arbitrary system commands, which poses a significant security risk if you're compiling untrusted documents. It should be used with extreme caution or disabled by default for security reasons. While XeTeX offers excellent Unicode and font support, some older TeX packages might not be fully compatible or require specific workarounds.


title: UNICODE SUPPORT
content:
XeTeX processes all input and output using <I>Unicode</I> (specifically UTF-8 by default), enabling users to work with a vast range of characters from different languages and scripts without complex encoding conversions.


title: NATIVE FONT HANDLING
content:
One of XeTeX's most powerful features is its ability to directly access and use fonts installed on your operating system (e.g., OpenType and Apple Advanced Typography). This eliminates the need for TeX-specific font metric files (.tfm) and greatly simplifies font embedding and usage.


title: HISTORY
content:
<b>XeTeX</b> was developed by Jonathan Kew, with its first public release around 2004. Its primary motivation was to overcome the limitations of traditional TeX engines regarding Unicode character encoding and advanced font features. It brought the ability to use native system fonts (OpenType and AAT) directly into the TeX workflow, simplifying multilingual typesetting and complex typographic layouts. It gained significant popularity and was soon integrated as a core component of major TeX distributions like TeX Live, becoming a preferred choice for modern TeX users who require extensive font and Unicode support.


title: PARAMETERS
content:
<b>-display <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to contact. Useful for connecting to a remote display.<br><br><b>-geometry <I>geometry</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial size and position of the created window (e.g., 200x100+10+10).<br><br><b>-id <I>id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches to an existing window by its hexadecimal ID instead of creating a new one. Useful for monitoring other applications.<br><br><b>-event <I>event_mask_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific event types to report. Can be used multiple times (e.g., <I>-event KeyPress -event ButtonPress</I>). If omitted, all events are reported.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs in synchronous mode, flushing the output buffer after each X request. Useful for debugging X protocol issues but can be slow.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <I>-event MotionNotify</I>, reporting pointer motion events. Can generate a large amount of output.<br><br>


title: DESCRIPTION
content:
<I>xev</I> (X Event Viewer) is a utility that creates a window and reports events received from the X server to standard output. It's an indispensable tool for debugging X applications, understanding window manager behavior, and observing how the X server handles user input like mouse clicks, keyboard presses, and window movements.<br><br>When launched, <I>xev</I> opens a small, empty window. As you interact with this window—moving the mouse cursor over it, clicking buttons, typing characters, or resizing/minimizing the window—<I>xev</I> prints detailed information about the corresponding X events (e.g., <I>KeyPress</I>, <I>ButtonPress</I>, <I>ConfigureNotify</I>) to your terminal. This real-time feedback helps developers and power users diagnose issues with event handling, verify input processing, and comprehend the low-level interactions within the X Window System.


title: CAVEATS
content:
Be aware that <I>xev</I> can produce a very verbose output, especially when monitoring pointer motion or all event types. This can quickly fill the terminal buffer. It reports raw X events, which might be different from the events an application toolkit (like GTK or Qt) might process, as toolkits often abstract or filter events.


title: COMMON USAGE EXAMPLE
content:
To observe keyboard and mouse button events only, you could run: <br> <b>xev -event KeyPress -event KeyRelease -event ButtonPress -event ButtonRelease</b><br>To monitor all events of an existing window (e.g., your terminal window), you'd first find its ID using <I>xwininfo</I>, then run: <br> <b>xev -id 0x400003</b> (replace with actual ID)


title: SYNOPSIS
content:
<b>xfce4-screenshooter</b> [<I>options</I>]<br><b>xfce4-screenshooter</b> [<I>-w</I>|<I>-f</I>|<I>-r</I>] [<I>-d SECONDS</I>] [<I>-s PATH</I>|<I>-c</I>|<I>-i</I>] [<I>-b</I>|<I>-u</I>]


title: PARAMETERS
content:
<b>--window, -w</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Capture the active window.<br><br><b>--fullscreen, -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Capture the entire screen.<br><br><b>--region, -r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select a region to capture interactively with the mouse.<br><br><b>--delay=SECONDS, -d SECONDS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delay the screenshot by the specified number of SECONDS.<br><br><b>--save=PATH, -s PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Save the screenshot to the specified file PATH.<br><br><b>--clipboard, -c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copy the screenshot to the system clipboard.<br><br><b>--imgur, -i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upload the screenshot to the Imgur image hosting service.<br><br><b>--border, -b</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include window decorations (borders and title bar) when capturing a window (used with -w).<br><br><b>--no-border, -u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude window decorations (borders and title bar) when capturing a window (used with -w).<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br><b>--version, -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br>


title: DESCRIPTION
content:
<b>xfce4-screenshooter</b> is a lightweight and versatile screenshot utility specifically designed for the Xfce desktop environment, though it can function in other environments. It allows users to capture various parts of their screen, including the entire desktop, a specific active window, or a user-defined rectangular region. The utility offers options to delay the capture, include or exclude window borders, and directly save the screenshot to a file, copy it to the system clipboard, or even upload it to the Imgur image hosting service. Its integration with Xfce panels and keyboard shortcuts makes it a convenient tool for quick and efficient screen capturing. It aims for simplicity and efficiency, providing essential screenshot functionalities without unnecessary complexity.


title: CAVEATS
content:
The Imgur upload functionality requires an internet connection and may be subject to Imgur's API rate limits or terms of service changes. When using the <i>-r</i> (region) option, the user must manually select the area, which pauses execution until selection is complete. For saving to a file (<i>-s</i>), ensure the specified path is writable and the directory exists.


title: KEYBOARD SHORTCUTS INTEGRATION
content:
Xfce users often configure custom keyboard shortcuts, such as Print Screen, to directly invoke <i>xfce4-screenshooter</i> with specific options (e.g., <i>-f</i> for fullscreen, <i>-w</i> for window, or <i>-r</i> for region selection), enhancing workflow efficiency.


title: PANEL INTEGRATION
content:
The utility can be launched via an application launcher on the Xfce panel or as part of a panel plugin, providing a graphical interface for selecting capture options before taking the screenshot, or direct-action buttons for common capture types.


title: HISTORY
content:
<b>xfce4-screenshooter</b> is an integral part of the Xfce Goodies project, providing essential utilities that complement the Xfce desktop environment. It has been developed alongside Xfce to offer a native and lightweight screenshot solution. Its focus has consistently been on simplicity and integration with the Xfce desktop, offering a reliable tool for users who prefer a non-resource-intensive desktop experience.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br><b>-e, --command=<I>COMMAND</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified <I>COMMAND</I> inside the terminal.<br><br><b>-T, --title=<I>TITLE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the window <I>TITLE</I>.<br><br><b>--window</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a new terminal window.<br><br><b>--tab</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a new tab in an existing terminal window.<br><br><b>--geometry=<I>GEOMETRY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial window size and position (e.g., &quot;80x24+100+100&quot;).<br><br><b>--fullscreen</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the terminal in fullscreen mode.<br><br><b>--maximize</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the terminal in maximized mode.<br><br><b>--hide-toolbar</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides the toolbar.<br><br><b>--font=<I>FONT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <I>FONT</I> to use (e.g., &quot;Monospace 12&quot;).<br><br><b>--color-foreground=<I>COLOR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground text <I>COLOR</I> (e.g., &quot;#FFFFFF&quot;).<br><br><b>--color-background=<I>COLOR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background <I>COLOR</I> (e.g., &quot;#000000&quot;).<br><br><b>--working-directory=<I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial working <I>PATH</I> for the terminal.<br><br><b>--holding-command</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keeps the terminal open after an executed command finishes.<br><br><b>--drop-down</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the terminal in a drop-down (Quake-style) mode.<br><br>


title: DESCRIPTION
content:
<b>xfce4-terminal</b> is the default terminal emulator for the Xfce desktop environment, renowned for its balance of features and low resource usage. It offers essential functionalities like tabbed browsing, customizable color schemes, font selection, and transparency. Users can easily manage multiple sessions within a single window using tabs, enhancing productivity.<br><br>The application provides extensive customization options for appearance and behavior, including support for 256 colors, true color, and a configurable scrollback buffer. It also allows execution of specific commands upon startup and can be launched in various window states such as fullscreen or maximized. Designed to integrate seamlessly with Xfce, it provides a fast and efficient command-line interface experience.


title: CAVEATS
content:
When using options like <I>--tab</I> or <I>--window</I>, <b>xfce4-terminal</b> relies on D-Bus integration; if the server isn't running or communication fails, new instances might be launched instead of new tabs/windows. Custom color and font settings from the command line may override user preferences or require specific formats. The <I>--drop-down</I> mode, while convenient, might interact differently with various window managers.


title: CONFIGURATION FILES
content:
User-specific preferences for <b>xfce4-terminal</b> are typically stored in the file <I>~/.config/xfce4/terminal/terminalrc</I>. This file contains settings for appearance, behavior, shortcuts, and more.


title: D-BUS INTEGRATION
content:
<b>xfce4-terminal</b> leverages D-Bus for inter-process communication. This allows multiple instances to share a single server process, enabling features like opening new tabs or windows in an already running terminal instance rather than launching entirely new processes, improving resource efficiency.


title: HISTORY
content:
<b>xfce4-terminal</b> emerged as the default terminal emulator for the Xfce desktop environment, designed to be lightweight, efficient, and well-integrated into the Xfce ecosystem. Its development reflects Xfce's philosophy of providing a user-friendly yet resource-conscious desktop experience. Over the years, it has continuously evolved with features like tab support, enhanced customization, and D-Bus integration, solidifying its role as a robust alternative to other terminal emulators while maintaining its core focus on performance.


title: SYNOPSIS
content:
<b>xfd</b> [<i>-options</i> ...] <b>-fn</b> <i>fontname</i><br><b>xfd</b> [<i>-options</i> ...] <b>-font</b> <i>fontname</i>


title: PARAMETERS
content:
<b><b>-fn</b> <i>fontname</i> or <b>-font</b> <i>fontname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X font to display. This option is mandatory and accepts either an X Logical Font Description (XLFD) name or a font alias.<br><br><b><b>-info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed font properties and metrics for the entire font, such as ascent, descent, min/max bounds, and default character.<br><br><b><b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides extensive font metrics information for each character displayed, including its width, left bearing, right bearing, and ascent/descent.<br><br><b><b>-start</b> <i>character</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the character code from which the display should begin. The character can be specified as a decimal, octal (0 prefix), or hexadecimal (0x prefix) number.<br><br><b><b>-end</b> <i>character</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the last character code to display, useful for examining a subset of the font.<br><br><b><b>-rows</b> <i>number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the number of rows of characters to display in the window. Must be a positive integer.<br><br><b><b>-columns</b> <i>number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the number of columns of characters to display in the window. Must be a positive integer.<br><br><b><b>-pixmap</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a pixmap to draw the characters, which can make the display process faster, especially for large fonts or remote X connections.<br><br><b><b>-box</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Draws a bounding box around each character, illustrating its precise dimensions and placement within its character cell.<br><br><b><b>-center</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Centers characters within their display cells, which can be useful when inspecting characters that don't fill their cell.<br><br><b><b>-scale</b> <i>factor</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the font by the specified floating-point factor. Useful for seeing characters larger or smaller than their native size.<br><br><b><b>-display</b> <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server display to connect to (e.g., :0.0, localhost:1.0).<br><br><b><b>-fg</b> <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground color for displaying characters (e.g., 'red', '#RRGGBB').<br><br><b><b>-bg</b> <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color for the display window (e.g., 'white', 'black').<br><br>


title: DESCRIPTION
content:
xfd (X Font Displayer) is a utility program for the X Window System that allows users to display all characters in an X font. It provides a visual representation of each character's glyph, its corresponding character code, and optionally, detailed font metrics. This tool is particularly useful for font designers, developers, and users who need to inspect the contents of a specific X11 font file, verify character mappings, or understand the spacing and bounding box of characters within a font. <br><br>While modern Linux systems often rely on Fontconfig and FreeType for rendering scalable fonts like TrueType and OpenType, xfd remains a valuable tool for understanding and debugging issues related to traditional X11 bitmap fonts or when working directly with the X server's core font system. It helps in visualizing character sets, identifying missing glyphs, or confirming the exact appearance of characters that are loaded by the X server.


title: CAVEATS
content:
xfd primarily works with the traditional X11 core fonts (bitmap fonts or server-side scalable fonts). It is less relevant for fonts managed by modern font rendering stacks like Fontconfig and FreeType, which handle TrueType and OpenType fonts client-side. While it can display <i>some</i> scalable fonts if the X server supports them and they are properly aliased, its primary strength lies in inspecting legacy X11 fonts. Users should be aware that the character codes displayed correspond to the encoding of the specified font, not necessarily Unicode.


title: INTERACTIVE DISPLAY
content:
Once <b>xfd</b> starts, the display window is interactive. Users can click on a character to see its character code and detailed metrics at the bottom of the window. Arrow keys (left/right, up/down), Page Up/Down, Home, and End keys can be used to navigate through the characters in the font, providing a dynamic way to explore the font's content.


title: FONT NAMING CONVENTIONS
content:
<b>xfd</b> requires fonts to be specified using the X Logical Font Description (XLFD) name or a font alias. Examples include <i>-fn fixed</i> or a full XLFD string like <i>-fn '-*-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-1'</i>. Users can use <b>xlsfonts</b> to list available fonts and their XLFD names, or <b>xfontsel</b> for interactive XLFD string generation, to ensure proper font selection with <b>xfd</b>.


title: HISTORY
content:
xfd has been a fundamental utility within the X Window System distribution since its early versions, tracing back to X11R1 and X11R2. It was developed as a direct tool for inspecting the bitmap fonts that were central to X's original rendering model. Its existence highlights the importance of understanding font metrics and glyph shapes in the early days of graphical user interfaces on Unix-like systems. Though font technologies have evolved, xfd remains a testament to the enduring architecture of X11 core fonts and is still included in most X.Org distributions.


title: SYNOPSIS
content:
<b>xfontsel</b> [<i>-toolkitoption</i> ...] [<i>-pattern font_pattern</i>] [<i>-full</i>] [<i>-print</i>] [<i>-info</i>]


title: PARAMETERS
content:
<b><i>-pattern &lt;font_pattern&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial font pattern to display. This allows starting <i>xfontsel</i> with a pre-defined filter for the available fonts, using standard X font wildcards.<br><br><b><i>-full</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes the selected font name to be printed in its complete XLFD form, including the wildcard "any" for unselected fields, rather than just showing the explicitly selected values. This provides a fully specified font name ready for use.<br><br><b><i>-print</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the final selected font name (XLFD string) to standard output when <i>xfontsel</i> exits. This is particularly useful for scripting or piping the selected font name to other commands or configuration files.<br><br><b><i>-info</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version and copyright information about <i>xfontsel</i> and then exits immediately. This provides details about the application's build and license.<br><br>


title: DESCRIPTION
content:
<i>xfontsel</i> is a graphical utility for the X Window System that provides an interactive way to explore and select fonts known to the X server. It presents various font properties—such as foundry, family, weight, slant, spacing, pixel size, and point size—as selectable fields. Users can choose values for each field from pop-up menus. As selections are made, <i>xfontsel</i> dynamically constructs a complete X Logical Font Description (XLFD) string, which is the standard way X applications specify fonts.<br><br>This tool is invaluable for understanding the intricate structure of XLFD names, finding specific fonts available on the system, and debugging font-related issues in older X applications that directly use server-side fonts. It also includes a test area where the selected font can be previewed.


title: CAVEATS
content:
<i>xfontsel</i> primarily interacts with the traditional X server's font database and X Logical Font Descriptions (XLFDs). While still relevant for many X applications and for understanding server-side font capabilities, it may not directly reflect or manage fonts handled by modern font rendering systems like <b>Fontconfig</b> and <b>FreeType</b>, which are commonly used by newer applications and desktop environments on Linux. Its utility is highest for applications that explicitly use server-side fonts or require XLFD specifications.


title: X LOGICAL FONT DESCRIPTION (XLFD)
content:
The primary purpose of <i>xfontsel</i> is to help users construct valid X Logical Font Descriptions (XLFDs). An XLFD is a standardized, dash-separated string that uniquely identifies a font based on 14 properties (e.g., foundry, family, weight, slant, pixel size, point size, character set registry, character set encoding). <i>xfontsel</i> provides interactive selection for each of these fields, making it easy to build precise font specifications without memorizing the complex XLFD syntax.


title: INTERACTIVE INTERFACE
content:
The <i>xfontsel</i> interface consists of a series of drop-down menus, each corresponding to a specific XLFD property. Users can select values from these menus to filter the available fonts. A 'Test' area displays sample text using the currently selected font. An 'XLFD' field shows the constructed font name, which can be easily copied and used in other X applications (e.g., `xterm -fn <font_name>`). Buttons for 'Quit', 'Select', 'Clear', and 'Rescan' provide control over the application's behavior and font list.


title: HISTORY
content:
<i>xfontsel</i> is a venerable utility within the X Window System, originating as part of the core X.Org or XFree86 distributions. It was developed to address the complexity of the X Logical Font Description (XLFD) naming convention, which was the standard method for specifying fonts in X applications for many years. Its development reflects an era where direct interaction with the X server's font capabilities was common and essential. While modern font management has evolved significantly with technologies like <b>Fontconfig</b>, <i>xfontsel</i> remains a key tool for developers and users working with legacy X applications or those still relying on server-side font rendering.


title: PARAMETERS
content:
<b>-L <I>label</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets or clears the filesystem label. The label can be up to 12 characters long. Use &quot;&quot; to clear an existing label.<br><br><b>-U <I>uuid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets or generates a new filesystem UUID. A specific UUID can be provided, or &quot;generate&quot; can be used to create a new random one. Use &quot;clear&quot; to clear an existing UUID.<br><br><b>-R <I>rtdev</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the real-time device for the filesystem. Used for files with real-time attributes. Use &quot;&quot; to clear.<br><br><b>-l <I>logdev</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets an external log device for the filesystem. Use &quot;&quot; to clear.<br><br><b>-F</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the operation to proceed, even if the filesystem is mounted or appears inconsistent. Use with extreme caution, as it can lead to data corruption.<br><br><b>-O <I>feature=value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets or clears feature flags on the filesystem. Common features include <I>ftype=0</I> (old directory format) or <I>ftype=1</I> (new directory format with file type in dirent).<br><br><b>-p <I>logproto</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the log protocol for the filesystem. This is typically used for specific internal optimizations or compatibility.<br><br><b>-Q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Queries and prints the log protocol version of the filesystem.<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version number of <I>xfs_admin</I>.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints filesystem information, including UUID, label, and other relevant details, without modifying the filesystem.<br><br>


title: DESCRIPTION
content:
<I>xfs_admin</I> is a utility used to modify the administrative parameters of an XFS filesystem. It allows an administrator to change various attributes of an unmounted XFS filesystem, such as its universally unique identifier (UUID), label, and real-time device assignment. It can also be used to manage XFS filesystem features like changing the inode format (<I>ftype</I>) or enabling/disabling other optional features. This tool operates at a low level and should be used with caution, as incorrect usage can lead to data corruption or loss. It is primarily used for post-creation modifications or system migration tasks.


title: CAVEATS
content:
<I>xfs_admin</I> should only be used on an <B>unmounted</B> XFS filesystem. Modifying a mounted filesystem can lead to severe data corruption and loss. Use the <B>-F</B> option with extreme caution, as it overrides safety checks and significantly increases the risk of damaging the filesystem. Always back up critical data before performing modifications with <I>xfs_admin</I>.


title: FILESYSTEM FEATURES (-O OPTION)
content:
The <B>-O</B> option allows manipulation of specific XFS filesystem features. One common use case is changing the <I>ftype</I> feature, which determines the type of directory entries. Setting <I>ftype=1</I> enables support for accurate file type reporting in directory entries, improving compatibility with tools like <I>ls</I> and other filesystems. This change is generally irreversible without reformatting the filesystem.


title: UUID AND LABEL MANAGEMENT
content:
Changing the filesystem UUID or label with <B>-U</B> or <B>-L</B> can be crucial for system migrations or avoiding conflicts when cloning filesystems. It's important to update any entries in <I>/etc/fstab</I> or other boot configurations that refer to the filesystem by its old UUID or label after making such changes.


title: HISTORY
content:
<I>xfs_admin</I> is part of the <I>xfsprogs</I> package, which contains various utilities for managing XFS filesystems. XFS itself was originally developed by Silicon Graphics (SGI) in the early 1990s and released as open-source in 2000. <I>xfs_admin</I> has been a fundamental tool within the <I>xfsprogs</I> suite, evolving alongside the XFS filesystem to support new features and administrative requirements over decades of development and usage in Linux and other Unix-like operating systems.


title: PARAMETERS
content:
<b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List extents in logical block order (this is the default behavior). Logical block order follows the sequential order of data within the file.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List extents in physical block order, showing their actual location on the disk and useful for understanding fragmentation.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query file system for extent size, allocation group size, and other block information. When this option is used, no <i>file</i> argument should be provided.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce verbose output, providing more detailed information for each extent, such as the logical start block, block count, and physical start block.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress the header row from the output, displaying only the extent data for scripting or parsing.<br><br><b><b>-A</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report block maps for all forks of the file: data, attribute, and realtime forks (if they exist for the file).<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report the block map specifically for the attribute fork of the file. This fork stores extended attributes associated with the file.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report the block map specifically for the data fork of the file (this is the default behavior).<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report the block map specifically for the realtime fork of the file. This is only applicable if the XFS filesystem was created with a realtime device and the file resides on it.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with the <b>-A</b> option, prints the name of the fork along with its block map, clarifying which fork's data is being displayed.<br><br>


title: DESCRIPTION
content:
The <b>xfs_bmap</b> command is a utility used on Linux systems with XFS file systems to display the block map of a specified file. A block map shows how a file's data is laid out on the disk, represented as a series of <i>extents</i>. Each extent is a contiguous range of disk blocks. This tool is invaluable for understanding file fragmentation, how efficiently space is being used, and for diagnosing performance issues related to disk I/O.<br><br>It can show the logical-to-physical block mapping, allowing users to see where on the physical disk a file's data resides. Beyond data forks, it can also report on attribute and realtime forks, providing a comprehensive view of a file's on-disk structure and physical allocation.


title: CAVEATS
content:
The <b>xfs_bmap</b> command is specific to XFS file systems. It will not work on other file system types (e.g., ext4, Btrfs, NTFS).<br>For files on a realtime device, the <b>-r</b> option must be used to view the realtime fork's map, provided the filesystem was configured with one. Access to the specified file(s) requires appropriate read permissions for the command to function correctly.


title: HISTORY
content:
<b>xfs_bmap</b> is part of the <i>xfsprogs</i> suite, the collection of user-space utilities for managing XFS file systems. XFS, originally developed by Silicon Graphics (SGI) in the early 1990s, was designed for high-performance computing environments and became integrated into the Linux kernel in 2001. The <i>xfsprogs</i> utilities, including <b>xfs_bmap</b>, have continuously evolved alongside the XFS file system to provide robust management and diagnostic capabilities, adapting to new XFS features and kernel advancements, ensuring its continued relevance for XFS administration.


title: PARAMETERS
content:
<b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The block device name (e.g., /dev/sdb1) or XFS image file to check.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the device is a regular file image, allowing `xfs_check` to operate on a disk image file instead of a block device.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Requests a read-only filesystem check. This option is typically redundant if the filesystem is already mounted read-only or unmounted.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the filesystem is a SCSI device. This option is often not necessary as the kernel usually handles device type detection automatically.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more details about the check process and detected inconsistencies.<br><br><b><b>-l</b> <i>logdev</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the device where the external log resides for filesystems configured with a separate log device.<br><br><b><b>-L</b> <i>loglen</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the length of the external log in filesystem blocks. This is used in conjunction with `<b>-l</b>`.<br><br>


title: DESCRIPTION
content:
<i>xfs_check</i> is a utility designed to perform consistency checks on an XFS filesystem. It examines the filesystem's metadata to identify potential corruption or inconsistencies without attempting to repair them. Its primary purpose is to report on the health of the filesystem.<br><br>It's important to note that <i>xfs_check</i> has been largely <b>superseded</b> by the `xfs_repair` utility. For a non-destructive check that simulates a repair, users are strongly advised to use `<b>xfs_repair -n</b>` instead, as `xfs_check` often provides less detailed or actionable information and may not detect all issues that `xfs_repair -n` would.<br><br>The command should typically be run on a filesystem that is <i>unmounted</i> or mounted in a <i>read-only</i> state to prevent further corruption during the check. It does not modify the filesystem in any way.


title: CAVEATS
content:
<i>xfs_check</i> is largely <b>deprecated</b>. The recommended approach for checking an XFS filesystem for errors without modifying it is to use the command `<b>xfs_repair -n</b>`. This provides a more comprehensive dry run of a potential repair, detecting a wider range of issues.<br><br>Crucially, <i>xfs_check does not perform any repairs</i>; it only reports detected inconsistencies. To ensure data integrity, the filesystem should be <b>unmounted</b> or mounted <b>read-only</b> before running this command or `xfs_repair -n`. Running it on a mounted, writable filesystem can lead to data corruption.


title: ALTERNATIVE FOR CHECKING
content:
For a more reliable and detailed check of an XFS filesystem without making any modifications, use `<b>xfs_repair -n <i>device</i></b>`. This command simulates a full repair and reports all issues it would fix, providing a more accurate assessment of the filesystem's health compared to `xfs_check`.


title: HISTORY
content:
<i>xfs_check</i> is part of the XFS filesystem utilities, which were originally developed by Silicon Graphics, Inc. (SGI). While it has existed as a tool for checking XFS filesystem consistency for a long time, its utility has diminished over time as the `xfs_repair` tool evolved to include more robust checking capabilities, particularly its non-destructive "dry run" mode (`-n`). Therefore, its usage has become less common, with `xfs_repair -n` now being the preferred method for pre-repair checks.


title: SYNOPSIS
content:
<b>xfs_copy</b> [<I>options</I>] <I>source_device_or_file</I> <I>destination_device_or_file</I> [<I>destination_device_or_file</I> ...]


title: PARAMETERS
content:
<b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug messages.<br><br><b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force overwrite of the destination device or file. This is required if the destination already contains an XFS filesystem or if you are copying to a block device that is in use.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactive mode. Prompt the user before overwriting an existing destination.<br><br><b>-L <I>loglen</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the log length for the new XFS filesystem on the destination.<br><br><b>-P</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a progress bar during the copy operation.<br><br><b>-r <I>rtlen</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the real-time section length for the new XFS filesystem on the destination.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat the source as a sparse file. This is useful when the source is an image file that might contain large blocks of zeros.<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information for <b>xfs_copy</b> and exit.<br><br><b><I>source_device_or_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The device or file containing the XFS filesystem to be copied. Examples include /dev/sda1 or a disk image file.<br><br><b><I>destination_device_or_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target device or file where the XFS filesystem will be copied. Multiple destinations can be specified for parallel copies.<br><br>


title: DESCRIPTION
content:
<b>xfs_copy</b> is a utility designed to perform a block-level copy of an entire XFS filesystem from a source device or file to one or more destination devices or files. Unlike file-level copy tools, it replicates the raw data and metadata structures of the XFS filesystem, making it suitable for tasks such as migrating an XFS volume, creating exact duplicates, or performing disaster recovery. A key feature is its ability to simultaneously copy to multiple destinations and to resize the filesystem during the copy operation, allowing the destination to be larger or smaller than the source (as long as it accommodates the used data). The destination must be an unmounted block device or a regular file of sufficient size. This command is an essential part of the <i>xfsprogs</i> suite, providing robust management capabilities for XFS.


title: CAVEATS
content:
The destination must be an unmounted block device or a regular file.<br>The destination must be large enough to accommodate the data from the source, considering any resizing.<br><b>xfs_copy</b> performs a block-level copy, meaning it duplicates the entire underlying structure of the XFS filesystem, including any unused space. For file-level backups, consider tools like <b>rsync</b> or <b>tar</b>.<br>Using -f will overwrite the destination without warning; use with caution.


title: PERFORMANCE
content:
The command can copy to multiple destinations concurrently, potentially speeding up duplication tasks for large filesystems. Performance can be influenced by disk I/O capabilities and the specified block sizes.


title: HISTORY
content:
<b>xfs_copy</b> is a component of the <i>xfsprogs</i> utilities, which manage the XFS filesystem. XFS was originally developed by Silicon Graphics, Inc. (SGI) for its IRIX operating system in the early 1990s. SGI open-sourced XFS in 2000, leading to its inclusion and continued development within the Linux kernel. <b>xfs_copy</b> has evolved as a stable and reliable tool for XFS migration and duplication, benefiting from the ongoing community and developer contributions to the <i>xfsprogs</i> project.


title: SYNOPSIS
content:
xfs_db [ <B>-c</B> <I>CMD</I> ] ... [ <B>-f</B> ] [ <B>-i</B> ] [ <B>-l</B> <I>LOGFILE</I> ] [ <B>-p</B> <I>PROG</I> ] [ <B>-r</B> ] [ <B>-s</B> ] [ <B>-x</B> ] <I>device</I>


title: PARAMETERS
content:
<b><B>-c</B> <I>CMD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified <I>CMD</I> (command) upon opening the filesystem. Multiple <B>-c</B> options can be provided, with commands executed in the order given. This allows for non-interactive use.<br><br><b><B>-f</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the filesystem image is contained within a regular file, rather than a block device.<br><br><b><B>-i</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows commands that would normally be disallowed on a mounted filesystem, such as commands requiring write access. This option should be used with extreme caution as it can lead to severe data corruption if the filesystem is actively in use.<br><br><b><B>-l</B> <I>LOGFILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a logfile to which all input commands and output responses from <B>xfs_db</B> will be copied, providing a record of the debugging session.<br><br><b><B>-p</B> <I>PROG</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the program name that will be displayed in the command prompt during interactive sessions.<br><br><b><B>-r</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the filesystem in read-only mode. This is the default behavior if the specified filesystem is currently mounted.<br><br><b><B>-s</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables shared exclusive device access, which can be useful in certain diagnostic scenarios.<br><br><b><B>-x</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints all numerical values in hexadecimal format, which is often preferred for low-level filesystem debugging.<br><br><b><I>device</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The block device node (e.g., <I>/dev/sdb1</I>) or image file containing the XFS filesystem to be debugged.<br><br>


title: DESCRIPTION
content:
<b>xfs_db</b> is a powerful utility designed for debugging and inspecting XFS filesystems. It allows users to open a block device or an image file containing an XFS filesystem, providing an interactive command-line interface. This interface enables deep examination and, if necessary, modification of the filesystem's internal structures.<br><br>Primarily, <b>xfs_db</b> is intended for XFS filesystem developers, expert administrators, and those needing to diagnose and potentially repair highly corrupted filesystems that <I>xfs_repair</I> cannot handle. It offers direct, low-level access to the filesystem's metadata, making it a potent tool for understanding XFS internals.<br><br>Due to its ability to directly manipulate raw filesystem structures, <b>xfs_db</b> carries a significant risk of data loss or further corruption if used incorrectly. Therefore, it is strongly advised to use <I>xfs_repair</I> for standard filesystem checks and repairs. <b>xfs_db</b> should be reserved for advanced diagnostic scenarios or when <I>xfs_repair</I> proves insufficient. It also supports executing commands non-interactively via the <B>-c</B> option, allowing for scripting of specific inspections.


title: CAVEATS
content:
Using <B>xfs_db</B> on a mounted XFS filesystem, especially with options like <B>-i</B> that allow write access, is extremely dangerous and can lead to immediate system crashes, severe data corruption, or an unbootable system. It is highly recommended to unmount the filesystem before using <B>xfs_db</B> or, if unmounting is not possible, to use it in read-only mode (which is the default for mounted filesystems). Always back up critical data before attempting any low-level filesystem manipulation.


title: INTERACTIVE COMMANDS
content:
Upon launching <B>xfs_db</B> without the <B>-c</B> option, it enters an interactive mode. In this mode, users can issue a variety of commands to navigate and examine different aspects of the XFS filesystem. These commands allow for inspection of superblock information (<I>sb</I>), inode structures (<I>inode</I>), directory entries (<I>dir</I>), allocation group headers (<I>agf</I>, <I>agi</I>), free space maps (<I>freesp</I>), and more. Users can print raw block contents (<I>block</I>), interpret data structures (<I>print</I>), and even write data directly to the filesystem (<I>write</I>), though the latter is highly discouraged unless fully understanding the implications. The <I>help</I> command provides a list of available interactive commands.


title: HISTORY
content:
<b>xfs_db</b> is a foundational utility within the XFS filesystem toolset, which originated at Silicon Graphics, Inc. (SGI) in the early 1990s. XFS was open-sourced in 2000 and subsequently integrated into the Linux kernel. <b>xfs_db</b> has evolved alongside the XFS filesystem, remaining a critical low-level debugging and inspection tool for developers and advanced administrators.


title: PARAMETERS
content:
<b>-b <i>average_bytes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the average size of files in bytes to use for the estimation. If omitted, the minimum file size (typically one block) is assumed.<br><br><b>-i <i>inodes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the total number of inodes (and implicitly files) to use for the estimation. This option implies -f.<br><br><b>-f <i>files</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the total number of files to use for the estimation. If neither -i nor -f is given, the current number of files on the filesystem is used.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Estimates space required for a mirrored filesystem setup, assuming each data block consumes twice the space.<br><br><b>-L</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optimizes the estimation for very large directories, where directory block allocation patterns might differ.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying more details about the estimation process and results.<br><br><b>-q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output, showing only essential information (quiet mode).<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, which implies verbose mode and provides even more detailed internal information.<br><br><b><i>mount_point</i> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more mount points of the XFS filesystems to estimate space for.<br><br>


title: DESCRIPTION
content:
<i>xfs_estimate</i> is a Linux command-line utility designed to predict the amount of disk space an XFS filesystem will consume under specific conditions.<br>It is particularly useful for capacity planning, allowing administrators to estimate storage requirements before populating a filesystem with data. The tool takes into account various XFS-specific overheads, such as inode allocation, directory structures, and block sizes, which are crucial for workloads involving numerous small files where these overheads can be significant.<br>Users can specify the desired number of files or inodes and an average file size. Based on these inputs and the underlying XFS filesystem's characteristics (like block size and inode size), <i>xfs_estimate</i> calculates an approximate total space requirement, including both data and metadata overhead.<br>This command provides a valuable insight into how different file counts and sizes will impact disk consumption, helping to optimize filesystem sizing and avoid unexpected out-of-space scenarios.


title: CAVEATS
content:
The output of <i>xfs_estimate</i> is an approximation and should not be treated as an exact calculation. It assumes a uniform distribution of file sizes (when -b is used) and does not account for potential fragmentation or specific application-level block allocation patterns that might deviate from general XFS behavior. It is designed for XFS filesystems only.


title: ESTIMATION LOGIC
content:
<i>xfs_estimate</i> calculates space by considering data blocks (based on average file size and count), inode blocks (based on inode count and inode size), and directory blocks (based on file count and directory block size). It uses filesystem metadata obtained from the mounted XFS filesystem to determine block sizes, inode sizes, and other structural parameters.


title: TYPICAL USE CASES
content:
This command is invaluable for administrators setting up new XFS filesystems for applications that generate a large number of small files (e.g., mail servers, web caches, version control systems), where metadata overhead can be a primary concern. It helps in determining the optimal size for a new filesystem or whether an existing filesystem can accommodate a projected increase in data.


title: HISTORY
content:
<i>xfs_estimate</i> is part of the XFS user-space utilities, which were originally developed by Silicon Graphics, Inc. (SGI) for their IRIX operating system. XFS, known for its high performance and scalability, was later ported to Linux. This utility was created to assist administrators in capacity planning, addressing the specific challenges of XFS's advanced allocation mechanisms, particularly the overhead associated with managing millions of inodes and directory blocks, which can consume significant space on large filesystems.


title: PARAMETERS
content:
<b><code>-f</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Freezes the specified XFS filesystem, suspending all I/O operations to it. This creates a consistent state for backup or snapshot purposes.<br><br><b><code>-u</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unfreezes the specified XFS filesystem, resuming all I/O operations that were previously suspended.<br><br>


title: DESCRIPTION
content:
<code>xfs_freeze</code> is a command-line utility used to suspend or resume I/O operations on an XFS filesystem. Its primary purpose is to create a consistent on-disk image of the filesystem for reliable backup or snapshot operations. When an XFS filesystem is frozen using this command, all data access and modification activities are temporarily halted, ensuring data integrity during the backup process. This prevents inconsistencies that could arise from changes occurring while the backup is being made. After the backup or snapshot is complete, the filesystem can be unfrozen, allowing normal operations to resume. The command operates directly on a specified XFS mount point and typically requires root privileges.


title: CAVEATS
content:
Using <code>xfs_freeze</code> will halt all I/O on the target filesystem, potentially causing applications or services accessing it to hang indefinitely until the filesystem is unfrozen.<br>It should never be used on filesystems mounted read-only.<br>The command must be executed with superuser (root) privileges.<br>It is critical to unfreeze the filesystem (using <code>-u</code>) after completing backup or snapshot operations; leaving it frozen will render the filesystem unusable.


title: CONSISTENT BACKUPS
content:
<code>xfs_freeze</code> is primarily utilized to achieve a consistent state of an XFS filesystem before performing a snapshot or backup. This ensures data integrity by preventing any changes or writes to the filesystem during the backup process.


title: USAGE FLOW
content:
Typically, an administrator would first freeze the filesystem (<code>xfs_freeze -f /mount/point</code>), then perform a volume snapshot or initiate a backup process (e.g., LVM snapshot, <code>rsync</code>), and finally unfreeze the filesystem (<code>xfs_freeze -u /mount/point</code>).


title: PRIVILEGES
content:
The command requires superuser (root) privileges to execute successfully, as it directly manipulates low-level filesystem states and global I/O operations for a mounted filesystem.


title: HISTORY
content:
<code>xfs_freeze</code> is an integral part of the XFS filesystem utilities. XFS was originally developed by Silicon Graphics (SGI) for its IRIX operating system in the early 1990s, renowned for its high performance and scalability. It was later ported to Linux and has been included in the mainline kernel since 2002. The <code>xfs_freeze</code> utility specifically leverages XFS's robust journaling and structural properties to provide a reliable method for creating consistent filesystem snapshots, a crucial feature for enterprise-level data management and backup strategies. Its continued usage highlights XFS's relevance in modern Linux server environments, particularly for scenarios requiring crash-consistent backups of large datasets.


title: PARAMETERS
content:
<b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing details of the defragmentation process.<br><br><b><b>-t</b> <i>max_time</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum time (in minutes) for <i><b>xfs_fsr</b></i> to run. It will exit gracefully after this time.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints statistics about fragmentation and then exits without performing any defragmentation.<br><br><b><b>-m</b> <i>min_blocks</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum number of blocks an extent must be able to move to be considered for defragmentation.<br><br><b><b>-l</b> <i>min_len</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the minimum extent length (in blocks) to be considered for defragmentation.<br><br><b><b>-o</b> <i>offset</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the starting byte offset within a file to begin defragmentation. Used with file arguments.<br><br><b><b>-n</b> <i>length</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the length (in bytes) within a file to defragment, starting from the offset. Used with file arguments.<br><br><b><b>-p</b> <i>prog_report</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the interval (in seconds) for printing progress reports during the defragmentation process.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output, useful for developers or advanced troubleshooting.<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <i><b>xfs_fsr</b></i> to exit immediately upon encountering the first error.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables 'compact' mode, where <i><b>xfs_fsr</b></i> attempts to coalesce extents into larger, more contiguous ones.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces reallocation of all files, even if they are already reasonably contiguous. Can be useful for optimizing for specific block alignment.<br><br><b><i>file</i> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more files or directories to defragment. If omitted, the entire filesystem will be processed.<br><br>


title: DESCRIPTION
content:
<i><b>xfs_fsr</b></i> (XFS filesystem reorganizer) is a utility designed to defragment mounted XFS filesystems. Its primary purpose is to improve I/O performance by reallocating file data blocks into contiguous regions on the disk. Over time, files can become fragmented, meaning their data is scattered across non-adjacent blocks, which increases disk seek times and degrades performance. <i><b>xfs_fsr</b></i> addresses this by reorganizing extents (contiguous blocks) for files and directories.<br><br>A key feature of <i><b>xfs_fsr</b></i> is its ability to operate online, allowing the filesystem to remain mounted and fully accessible during the defragmentation process. This minimizes downtime for critical systems. It can operate on an entire filesystem or be directed to defragment specific files or directories, offering flexibility based on performance needs. While XFS is inherently designed to minimize fragmentation, <i><b>xfs_fsr</b></i> provides a tool for specific workloads where fragmentation might still occur and impact performance, such as frequently modified large files or databases.


title: CAVEATS
content:
Running <i><b>xfs_fsr</b></i> can be I/O intensive and may temporarily impact system performance due to increased disk activity. While designed for online operation, sufficient free space is required as data blocks are reallocated. Defragmentation is not always necessary for XFS due to its design, and should be performed only when specific performance issues linked to fragmentation are observed. Avoid running on extremely busy filesystems without prior testing or during peak hours.


title: PERFORMANCE CONSIDERATIONS
content:
While the goal of <i><b>xfs_fsr</b></i> is to improve performance, the defragmentation process itself consumes significant system resources (CPU, memory, disk I/O). It is generally recommended to run <i><b>xfs_fsr</b></i> during off-peak hours or on systems that can tolerate temporary performance degradation. Monitoring system resources during execution is advisable.


title: ONLINE OPERATION
content:
A significant advantage of <i><b>xfs_fsr</b></i> is its ability to perform defragmentation on a live, mounted filesystem. This means that services utilizing the filesystem can continue to operate with minimal or no interruption, which is critical for high-availability environments. The utility handles concurrent filesystem activity gracefully.


title: HISTORY
content:
<i><b>xfs_fsr</b></i> is part of the XFS filesystem utilities, known as <i>xfsprogs</i>. XFS itself was originally developed by Silicon Graphics (SGI) for its IRIX operating system in the early 1990s. It was later ported to Linux and released under the GNU General Public License (GPL). <i><b>xfs_fsr</b></i> has been a core component of the XFS toolset, providing online defragmentation capabilities crucial for maintaining performance on production systems.


title: PARAMETERS
content:
<b><i>mount-point</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the XFS filesystem to be grown is currently mounted. This is a mandatory argument.<br><br><b><b>-D</b> <i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the new size for the filesystem's <b>data section</b>, in filesystem blocks. If this option is omitted, the data section will be grown to the maximum size supported by the underlying device.<br><br><b><b>-L</b> <i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the new size for the filesystem's <b>log section</b>, in filesystem blocks. Resizing the log section is less common than the data section and typically done for performance tuning.<br><br><b><b>-R</b> <i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the new size for the filesystem's <b>realtime section</b>, in filesystem blocks. This section is used for applications requiring guaranteed bandwidth and low latency.<br><br><b><b>-d</b> <i>DataSectionOptions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows modifying advanced parameters of the <b>data section</b>, such as <i>agcount N</i> (number of allocation groups) or <i>maxpct N</i> (maximum percentage of space for inode allocation). This option is for advanced tuning, not direct size growth.<br><br><b><b>-l</b> <i>LogSectionOptions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows modifying advanced parameters of the <b>log section</b>, such as <i>size N</i> (log size in blocks) or <i>maxpct N</i>. This is typically used for performance tuning rather than primary resizing.<br><br><b><b>-r</b> <i>RealtimeSectionOptions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows modifying advanced parameters of the <b>realtime section</b>, such as <i>extsize Nblocks</i> (realtime extent size). This is used for fine-tuning realtime data allocation characteristics.<br><br>


title: DESCRIPTION
content:
The <b>xfs_growfs</b> command is a powerful utility used to expand the size of an existing XFS filesystem. Unlike many other filesystem resizing tools, <b>xfs_growfs</b> can perform its operation while the filesystem is mounted and in active use, making it an ideal choice for production environments requiring high availability.<br><br>It's crucial to understand that <b>xfs_growfs</b> does not resize the underlying block device (e.g., a disk partition or an LVM logical volume). Instead, it extends the XFS filesystem to utilize the newly available space on a block device that has <i>already</i> been resized beforehand. This tool primarily allows for growing the data section, but can also resize the log or realtime sections, either to a specified size or to fill the entire available space on the underlying storage.


title: CAVEATS
content:
<ul><li>The underlying block device (e.g., partition, LVM logical volume) <b>must be extended first</b> before running <b>xfs_growfs</b>.</li><li><b>xfs_growfs</b> can only extend an XFS filesystem; it <b>cannot shrink</b> it.</li><li>The filesystem must be <b>mounted</b> to be grown.</li><li>This command is specific to <b>XFS filesystems</b> and will not work with other filesystem types (e.g., ext4, Btrfs).</li></ul>


title: COMMON USAGE SCENARIO
content:
The typical workflow for expanding an XFS filesystem involves two main steps:<br>1. Extend the underlying block device: Use tools like <b>lvresize</b> (for LVM logical volumes) or partition management tools (e.g., <b>fdisk</b>, <b>parted</b>) to increase the size of the partition or logical volume that hosts the XFS filesystem.<br>2. Run <b>xfs_growfs</b>: Execute <b>xfs_growfs</b> on the mounted XFS filesystem. For example, <code>sudo xfs_growfs /mnt/mydata</code> will expand the filesystem to use all available space on the underlying device. Alternatively, specify a target size with <code>sudo xfs_growfs -D <i>new_size_in_blocks</i> /mnt/mydata</code>.<br>3. Verify: Use <b>df -h</b> or <b>xfs_info</b> to confirm the filesystem's new size.


title: ONLINE OPERATION
content:
One of the key advantages of <b>xfs_growfs</b> is its ability to perform online resizing. This means that the filesystem can remain mounted and accessible to applications and users during the expansion process, minimizing downtime. This capability is particularly beneficial for critical systems where service interruption must be avoided.


title: HISTORY
content:
XFS (eXtended File System) was originally developed by Silicon Graphics, Inc. (SGI) for its IRIX operating system in the early 1990s. Its robust features, including online defragmentation and online resizing capabilities like <b>xfs_growfs</b>, made it attractive. XFS was ported to Linux in 2001 and has since become a widely adopted journaling filesystem, especially in enterprise environments where its scalability and online management features are highly valued.


title: SYNOPSIS
content:
<i>xfs_io</i> [ <i>options</i> ] [ <i>file</i> ]<br><i>xfs_io</i> -c <i>command</i> [ <i>options</i> ] [ <i>file</i> ]<br><i>xfs_io</i> -V


title: PARAMETERS
content:
<b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the specified file in read-only mode.<br><br><b><b>-w</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the specified file in read-write mode (default). This option is largely for completeness as write mode is the default.<br><br><b><b>-c</b> <i>&lt;cmd&gt; [args]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified command(s) and exits. Multiple <b>-c</b> options can be used to execute a sequence of commands.<br><br><b><b>-p</b> <i>&lt;projid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the project ID for subsequent operations, affecting project quota management.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about operations.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints I/O statistics after operations complete.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces direct I/O, bypassing the operating system's page cache. This is useful for performance testing.<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables extended debug output, useful for developers and advanced troubleshooting.<br><br><b><b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on a raw device (e.g., a partition) instead of a file, typically to inspect or modify the superblock or other device-level structures.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>xfs_io</i> version information and exits.<br><br><b>allocsp <i>&lt;offset&gt; &lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allocates space for a file from <i>offset</i> for <i>length</i> bytes. This is a sparse allocation, meaning blocks are not necessarily written to.<br><br><b>falloc <i>&lt;offset&gt; &lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preallocates disk space for a file, similar to posix_fallocate(3). The space is guaranteed to be reserved and zeroed.<br><br><b>fiemap [<i>options</i>] <i>&lt;offset&gt; &lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the extent mapping for a file, showing on-disk locations and sizes of allocated blocks.<br><br><b>pwrite <i>&lt;offset&gt; &lt;length&gt; [pattern]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes <i>length</i> bytes of data at <i>offset</i> to the file. An optional <i>pattern</i> (e.g., '0xdeadbeef', 'a', '0') can be specified for the data.<br><br><b>pread <i>&lt;offset&gt; &lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads <i>length</i> bytes of data from the file starting at <i>offset</i> and prints it to standard output. Data is typically displayed in hexadecimal and ASCII.<br><br><b>seek <i>&lt;offset&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the current file offset for subsequent read/write operations.<br><br><b>getxattr <i>&lt;attr_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and displays the value of an extended attribute associated with the file.<br><br><b>setxattr <i>&lt;attr_name&gt; &lt;attr_value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets an extended attribute with the specified name and value on the file.<br><br><b>fsync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes all dirty data and metadata (including directory entries) to disk for the current file.<br><br><b>fdatasync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes all dirty data to disk for the current file, but not necessarily metadata that is not required for subsequent access.<br><br><b>zero <i>&lt;offset&gt; &lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Zeros out a specified region of the file from <i>offset</i> for <i>length</i> bytes.<br><br><b>stat</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed status information (like inode number, size, permissions, links, etc.) about the current file.<br><br><b>lsattr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists XFS-specific file attributes (e.g., noatime, append-only, immutable). Also known as inode flags.<br><br><b>chattr <i>&lt;attr_flags&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes XFS-specific file attributes based on the provided flags (e.g., '+i' for immutable, '-a' for no append-only).<br><br><b>quit | exit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exits the <i>xfs_io</i> interactive shell.<br><br>


title: DESCRIPTION
content:
<i>xfs_io</i> is a powerful diagnostic and debugging tool for the XFS filesystem. It allows users to perform various I/O operations and examine file system metadata directly on a mounted XFS filesystem. This includes reading and writing blocks, manipulating file attributes, managing extended attributes, and performing low-level operations like preallocation, writeback, and data zeroing. It is invaluable for testing filesystem behavior, reproducing issues, and understanding XFS internals, making it a critical utility for developers and system administrators. <i>xfs_io</i> can operate on files, directories, or block devices and supports both interactive and non-interactive modes of operation. It offers a wide range of internal commands for fine-grained control over XFS-specific features.


title: CAVEATS
content:
Most operations of <i>xfs_io</i>, especially those involving writes or direct device access (<b>-D</b>), require root privileges.<br>Improper use of <i>xfs_io</i>, particularly write commands or operations on raw devices, can lead to data corruption or filesystem damage. It is a low-level tool intended for experienced users and developers.<br><i>xfs_io</i> is specific to XFS filesystems and will not work on other filesystem types (e.g., ext4, Btrfs).


title: INTERACTIVE MODE
content:
When invoked without the <b>-c</b> option and with a file argument, <i>xfs_io</i> enters an interactive shell (e.g., <i>xfs_io></i>). This mode allows users to execute multiple commands sequentially on the specified file or device without re-invoking the utility for each command. This is highly beneficial for complex debugging or testing scenarios.


title: ERROR HANDLING
content:
<i>xfs_io</i> provides detailed error messages when operations fail, often mapping directly to standard Unix <i>errno</i> values (e.g., 'Permission denied', 'No space left on device') or XFS-specific error codes. This verbosity is crucial for diagnosing issues at a low level.


title: HISTORY
content:
XFS is a high-performance 64-bit journaling filesystem created by Silicon Graphics, Inc. (SGI) for their IRIX operating system. It was ported to Linux in 2001 and has since become a mature and widely used filesystem, especially for large files and high-concurrency workloads. <i>xfs_io</i> is part of the <i>xfsprogs</i> package, which provides a suite of utilities for XFS filesystem management. Its development has mirrored the evolution and maintenance of XFS itself, focusing on providing robust low-level diagnostic and testing capabilities for filesystem developers and system administrators.


title: PARAMETERS
content:
<b><b>-b</b> <i>block</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the starting log block number from which to begin printing. Useful for examining specific sections of the log.<br><br><b><b>-c</b> <i>count</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the output to the specified number of log blocks, starting from the beginning or a specified offset (if <b>-b</b> is used).<br><br><b><b>-f</b> <i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the XFS log from an external log file rather than directly from a device. This is particularly useful for offline analysis or when the filesystem on the device is unmountable.<br><br><b><b>-l</b> <i>logstart</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts printing log records from a specific log sequence number (LSN). LSNs provide a unique identifier for each record in the log.<br><br><b><b>-t</b> <i>timestamp</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints log records that occurred at or after the specified timestamp. The timestamp format typically adheres to ISO 8601 (e.g., YYYY-MM-DD[THH:MM:SS]).<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the log contents in a raw hexadecimal dump format, providing a byte-level view of the log records, which is crucial for low-level debugging.<br><br><b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The block device (e.g., <i>/dev/sdb1</i>) containing the XFS filesystem whose log is to be analyzed. For consistency and safety, it is generally recommended to use this command on an unmounted device.<br><br>


title: DESCRIPTION
content:
<i>xfs_logprint</i> is a low-level debugging utility designed for the XFS filesystem. Its primary function is to print the raw contents of the XFS journal, also known as the log. The XFS journal plays a critical role in ensuring filesystem consistency and quick recovery after system crashes by recording metadata changes. This command is explicitly not intended for routine system administration but rather for advanced users, developers, and forensic investigators who need to deeply examine the log's internal structure and raw records.<br><br>The output is highly technical, presenting log records, transactions, and various metadata operations in a human-readable format. It is particularly valuable for diagnosing complex filesystem corruption, analyzing crash recovery scenarios, or gaining a deeper understanding of XFS internals when standard tools are insufficient.


title: CAVEATS
content:
<b>THIS COMMAND IS ONLY FOR XFS DEVELOPERS. DO NOT USE.</b><br><br>The output of <i>xfs_logprint</i> is highly technical and requires a deep understanding of XFS internals, including its journaling mechanisms and data structures. It is not intended for general troubleshooting or routine system administration. Misinterpreting the log output can lead to incorrect diagnoses of filesystem problems. While <i>xfs_logprint</i> performs read-only operations, it's generally safer and recommended to use it on an unmounted XFS filesystem to ensure a static view of the log and avoid any potential conflicts with live filesystem activity.


title: PURPOSE AND AUDIENCE
content:
<i>xfs_logprint</i> is an expert-level debugging and diagnostic tool specifically designed for XFS filesystem developers and highly experienced system administrators. Its primary purpose is to provide an in-depth view into the XFS journal, which is essential for troubleshooting complex filesystem issues and understanding internal XFS operations. It is explicitly not recommended for users without specialized knowledge due to the complexity of its output.


title: OUTPUT INTERPRETATION
content:
The command's output consists of raw log records, which represent atomic metadata operations (e.g., inode updates, directory entries, transaction commits). Interpreting this output accurately requires profound knowledge of XFS data structures, journaling semantics, and transaction flows. Without this expertise, the log dump will appear as a cryptic sequence of internal messages.


title: SAFETY AND RECOMMENDED USAGE
content:
Although <i>xfs_logprint</i> is a read-only utility and does not modify the filesystem, it is strongly advised to use it on an unmounted XFS filesystem. Analyzing an unmounted log ensures data consistency and provides a stable snapshot without interference from ongoing filesystem activity. While it can read from a mounted device, an unmounted state is preferred for reliable and consistent log analysis, especially during forensic or advanced debugging scenarios.


title: HISTORY
content:
XFS, developed by Silicon Graphics (SGI) in the early 1990s, was designed as a high-performance journaling filesystem. It was open-sourced and integrated into the Linux kernel around 2001. <i>xfs_logprint</i> is a core component of the <i>xfsprogs</i> utility suite, providing specialized tools for XFS filesystem management. Its development has been intrinsically linked to the journaling architecture of XFS, enabling low-level inspection of the transaction log. This capability has been crucial for debugging and understanding the filesystem's crash recovery behavior since XFS's early days, solidifying its role as a key developer utility.


title: PARAMETERS
content:
<b><i>source_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the XFS metadata dump file, typically created by <i>xfs_metadump</i>.<br><br><b><i>target_device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target block device (e.g., <i>/dev/sdb1</i>) where the metadata will be restored. <b>Caution:</b> This device will be overwritten.<br><br><b><b>-s</b> <i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the size of the target filesystem in blocks. This is particularly useful if the original filesystem was sparse or if the target device is smaller than the original but still large enough for the metadata.<br><br><b><b>-p</b> <i>progname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an external program to display a progress bar during the restore operation.<br><br><b><b>-c</b> <i>chunk_size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the chunk size in bytes for progress bar updates when using the <b>-p</b> option.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force overwrite of any existing filesystem on the <i>target_device</i>. <b>Use with extreme caution as this will destroy all data on the target device.</b><br><br><b><b>-g</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip geometry detection. Useful in certain virtualized or non-standard environments.<br><br><b><b>-L</b> <i>label</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the XFS filesystem label for the restored filesystem.<br><br><b><b>-U</b> <i>uuid</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the XFS filesystem universally unique identifier (UUID) for the restored filesystem.<br><br><b><b>-o</b>, <b>--oem</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;OEM mode. Suppress vendor-specific strings in output.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read-only mode. Perform a dry run without actually writing to the target device. Useful for verifying command syntax and potential outcomes.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verbose output. Display more information about the restore process.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quiet output. Suppress most messages, showing only errors.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print version information and exit.<br><br>


title: DESCRIPTION
content:
<i>xfs_mdrestore</i> is a critical XFS utility used for disaster recovery and forensic analysis. It takes a metadata image created by <i>xfs_metadump</i> and reconstructs the XFS filesystem's metadata structure onto a specified target device. This process recreates the filesystem's inodes, directories, allocation groups, and other structural components, but <b>does not restore user data</b>. User data blocks on the target device will typically be zeroed out or left as-is, depending on the dump's specifics. <br><br>The primary use cases include recreating a filesystem's structure for debugging without needing the original data, or as a step in a disaster recovery process where metadata was lost but user data might be recoverable by other means. The target device must be large enough to accommodate the restored metadata.


title: CAVEATS
content:
<ul><li><b>Data Loss Risk:</b> Using the <b>-f</b> option will irrevocably destroy all data on the <i>target_device</i>. Always double-check the target device before proceeding.</li><li><b>Metadata Only:</b> <i>xfs_mdrestore</i> only restores the filesystem's metadata. User data blocks are not restored and will be zeroed out or contain arbitrary data on the target device. This tool is not for full data recovery.</li><li><b>Target Device Size:</b> The <i>target_device</i> must be large enough to contain the restored metadata structures.</li><li><b>Source Consistency:</b> The restored filesystem reflects the state of the original filesystem exactly as it was at the time the <i>xfs_metadump</i> was created.</li></ul>


title: HISTORY
content:
<i>xfs_mdrestore</i> is part of the XFS filesystem utilities, which originated from Silicon Graphics (SGI) as a high-performance journaling filesystem for their IRIX operating system. XFS was open-sourced and integrated into the Linux kernel in the early 2000s, becoming a popular choice for large, high-performance filesystems. The <i>xfs_mdrestore</i> and <i>xfs_metadump</i> tools have been integral to XFS's resilience and debugging capabilities since their early development, providing a robust mechanism for metadata backup and recovery.


title: SYNOPSIS
content:
<b>xfs_metadump</b> [ <i>-a</i> ] [ <i>-g</i> ] [ <i>-i</i> ] [ <i>-o</i> <i>offset</i> ] [ <i>-r</i> ] [ <i>-u</i> ] [ <i>-v</i> ] <i>device</i> <i>outfile</i>


title: PARAMETERS
content:
<b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump all metadata, including free space and unallocated block information.<br><br><b>-g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use only group-level I/O.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invert the default dump behavior, dumping all metadata <i>except</i> the journal.<br><br><b>-o offset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the starting offset on the device for the dump.<br><br><b>-r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump raw data blocks (not formatted metadata). Use with caution, mostly for debugging.<br><br><b>-u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump all metadata, including unallocated blocks. This can expose previously deleted user data.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verbose output, printing more information during the dump process.<br><br>


title: DESCRIPTION
content:
The <b>xfs_metadump</b> command extracts the metadata of an XFS filesystem and writes it to an output file. This dumped metadata can then be used for various purposes, primarily debugging, analysis, or partial recovery of a corrupted XFS filesystem. It creates a self-contained, portable representation of the filesystem's structural information, including details about inodes, directories, allocation groups, and journaling. The tool is particularly useful when working with development or support teams to diagnose filesystem issues without requiring access to the original device. By default, it excludes user data, focusing solely on the structural components.


title: CAVEATS
content:
The filesystem should ideally be <i>unmounted</i> or <i>mounted read-only</i> to ensure consistent metadata capture and prevent corruption during the dump process. If mounted read-write, the dump might be inconsistent.<br><br>The output file can be very large, especially for large filesystems or when using options like <b>-a</b> or <b>-u</b>. Ensure sufficient disk space.<br><br>Using options like <b>-u</b> or <b>-a</b> can expose sensitive information (e.g., deleted file fragments) that might still reside in unallocated blocks.<br><br>The dump file is a raw binary image of the metadata, not a human-readable text file. It's typically processed by other tools like <b>xfs_mdrestore</b> or <b>xfs_db</b>.


title: PURPOSE OF METADATA DUMPS
content:
Metadata dumps are invaluable for forensic analysis or for recreating the filesystem structure on a different system for debugging. They allow developers to examine the exact state of the filesystem's structural information without needing the original device or compromising user data.


title: PROCESSING THE DUMP FILE
content:
The output file from <b>xfs_metadump</b> is typically processed by tools like <b>xfs_db</b> to navigate and inspect the metadata, or by <b>xfs_mdrestore</b> to restore a filesystem's metadata (e.g., after an accidental <b>mkfs.xfs</b> that wiped only the superblock, allowing data recovery if the data blocks are intact).


title: HISTORY
content:
The <b>xfs_metadump</b> command is part of the <i>xfsprogs</i> suite, which provides user-space utilities for managing XFS filesystems. XFS itself was originally developed by Silicon Graphics, Inc. (SGI) for its IRIX operating system in the early 1990s. It was one of the first journaling filesystems to be widely adopted. SGI later released XFS under an open-source license, and it was merged into the Linux kernel in 2002. <b>xfs_metadump</b> has been a crucial tool within the xfsprogs suite for diagnostic and recovery purposes since its open-sourcing, evolving alongside the XFS filesystem itself.


title: PARAMETERS
content:
<b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make <b>xfs_mkfile</b> verbose. This option causes <b>xfs_mkfile</b> to print additional information about the file creation process, which can be useful for debugging or understanding the allocation behavior.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not allocate blocks for the file. This creates a sparse file, where blocks are only allocated as data is actually written to the file. This is useful for quickly creating large files that consume minimal disk space until data is populated.<br><br><b><i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the size of the file to be created. This argument can be suffixed with <i>s</i> (sectors), <i>k</i> (kilobytes), <i>m</i> (megabytes), or <i>g</i> (gigabytes) to denote the unit. If no suffix is given, bytes are assumed. For example, '100m' creates a 100 megabyte file.<br><br><b><i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path and name of the file to be created. If the file already exists, <b>xfs_mkfile</b> will overwrite it.<br><br>


title: DESCRIPTION
content:
<b>xfs_mkfile</b> is a utility specifically designed for creating files, often large ones, on XFS filesystems. Unlike general-purpose file creation tools like <b>touch</b> or <b>dd</b>, <b>xfs_mkfile</b> is part of the XFS administrative toolkit and is particularly useful for performance testing, benchmarking, or simulating file system loads.<br><br>It allows users to quickly create files of a specified size, optionally pre-allocating all necessary data blocks without writing actual content, or creating them as sparse files. This makes it efficient for scenarios where the size and allocation characteristics of files are critical for testing filesystem behavior rather than the content itself. Its primary use case revolves around the development, testing, and administration of XFS filesystems.


title: CAVEATS
content:
<b>xfs_mkfile</b> is primarily intended for use with XFS filesystems. While it might function on other filesystems in some environments, its behavior and efficiency are optimized for XFS.<br><br>It's a low-level utility often used for testing and benchmarking, not for general user file creation where data content is important.<br><br>The -n (no-block) option creates sparse files, meaning the disk space is not immediately consumed until data is written. This can be misleading if one expects full pre-allocation without explicit data writes.


title: PRIMARY USE CASE
content:
<b>xfs_mkfile</b> is often used by system administrators and developers to simulate disk full conditions, test I/O performance with large files, or evaluate filesystem scalability. Its ability to quickly create files of specified sizes, with or without block allocation, makes it invaluable for stress testing and performance analysis of XFS environments.


title: PERFORMANCE CONSIDERATIONS
content:
When creating very large files without the -n option, <b>xfs_mkfile</b> will pre-allocate all data blocks. While it doesn't write actual data to these blocks (unless the filesystem zeroes newly allocated blocks), this pre-allocation can still be a time-consuming operation for extremely large files on busy systems.


title: HISTORY
content:
<b>xfs_mkfile</b> is part of the <i>xfsprogs</i> package, which provides a comprehensive suite of utilities for managing XFS filesystems. XFS was originally developed by Silicon Graphics, Inc. (SGI) in the early 1990s and released as open source under the GNU General Public License in 2000. <b>xfs_mkfile</b>, along with other <i>xfsprogs</i> tools, has evolved with the XFS filesystem itself, primarily to assist in testing and benchmarking its performance and allocation characteristics, particularly for large files and parallel I/O workloads.


title: SYNOPSIS
content:
<b>xfs_ncheck</b> [ <b>-v</b> ] [ <b>-i</b> <i>inode#</i> ] [ <b>-s</b> ] [ <b>-o</b> <i>offset</i> ] <i>device</i>


title: PARAMETERS
content:
<b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose mode, providing more detailed output during the scan process.<br><br><b><b>-i</b> <i>inode#</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular inode number to look up. If this option is omitted, <i>xfs_ncheck</i> will scan all directories for potentially orphaned files or list all entries found.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scans for orphaned files and prints their path names. This option is useful when <i>xfs_repair</i> has moved unreferenced files to the <b>lost+found</b> directory, and you want to identify their original paths.<br><br><b><b>-o</b> <i>offset</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory block offset within the filesystem to start scanning from. This is an advanced option typically used for debugging or very specific recovery scenarios.<br><br><b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The XFS device special file (e.g., <i>/dev/sda1</i>, <i>/dev/mapper/vg0-lv0</i>) on which to perform the inode lookup or scan.<br><br>


title: DESCRIPTION
content:
<i>xfs_ncheck</i> is a utility designed for the XFS filesystem that performs a reverse lookup, mapping inode numbers back to their corresponding path names. This command is particularly useful during filesystem inconsistencies, recovery operations, or when analyzing filesystem corruption where only inode numbers are known. It operates by scanning the directory entries of an XFS filesystem to find the given inode number and then constructing the full path to that inode. Unlike <i>fsck</i> utilities, <i>xfs_ncheck</i> does not modify the filesystem; it merely reports paths. It's often used in conjunction with tools like <i>xfs_repair</i> or <i>xfs_check</i> to help identify specific files associated with problem inodes. It can be used on a mounted or unmounted filesystem, though typically used on unmounted or read-only mounted filesystems for consistency and reliable results.


title: CAVEATS
content:
Running <i>xfs_ncheck</i>, especially the full scan without <b>-i</b> (i.e., with <b>-s</b>), can be very time-consuming on large filesystems due to the extensive directory traversal required.<br>It is generally recommended to run this command on an unmounted XFS filesystem or one mounted read-only to ensure consistent results and avoid issues with concurrent filesystem modifications.


title: USAGE CONTEXT
content:
This command is primarily used in recovery and troubleshooting scenarios. For instance, after <i>xfs_repair</i> has identified and potentially moved unreferenced inodes to the <b>lost+found</b> directory, <i>xfs_ncheck</i> can help identify the original file paths associated with those inode numbers, aiding in data recovery.


title: PERFORMANCE CONSIDERATIONS
content:
When invoked without a specific inode number (i.e., using the <b>-s</b> option to scan for all orphaned files), <i>xfs_ncheck</i> performs a full traversal of the filesystem's directory structure. This can be I/O intensive and take a significant amount of time on filesystems with many files or deep directory hierarchies. It is most efficient when used with the <b>-i</b> option to look up a single known inode.


title: HISTORY
content:
<i>xfs_ncheck</i> is part of the <i>xfsprogs</i> suite, a collection of utilities for managing XFS filesystems. XFS itself was originally developed by Silicon Graphics (SGI) in the early 1990s for its IRIX operating system and later open-sourced, becoming a prominent journaling filesystem in the Linux kernel. The concept of an 'ncheck' utility (to reverse map inode numbers to path names) is a traditional feature found in Unix-like filesystem toolsets, assisting in recovery and diagnostics. <i>xfs_ncheck</i> provides this specific functionality tailored for the XFS filesystem structure.


title: SYNOPSIS
content:
xfs_quota [ -x ] [ -p <I>prog</I> ] [ -c <I>cmd</I> ... ] [ <I>path</I> ... ]<br><br><I>Common subcommands (used with -c or interactively):</I><br>report [-ugp] [<I>path</I> ...]<br>limit [-ugp] <I>bsoft</I> <I>bhard</I> <I>isoft</I> <I>ihard</I> <I>name</I> ...<br>enable [-ugp] [<I>path</I> ...]<br>disable [-ugp] [<I>path</I> ...]<br>state [-ugp] [<I>path</I> ...]<br>project -s <I>name</I> [<I>id</I>] [<I>path</I> ...]


title: PARAMETERS
content:
<b>-x</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables <B>expert mode</B>, which is required for certain commands that modify quota settings, such as `enable`, `disable`, `limit`, and `project`.<br><br><b>-p <I>prog</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the program name to be used for prompts when operating in <B>interactive mode</B>.<br><br><b>-c <I>cmd</I> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified <B>command(s)</B> (<I>cmd</I>) and then exits. Multiple `-c` options can be used, and commands are executed sequentially.<br><br><b><I>path</I> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more <B>mount points</B> (or their paths) on which the quota operations should be performed. If omitted, operations typically apply to all mounted XFS filesystems with quotas enabled.<br><br>


title: DESCRIPTION
content:
xfs_quota is a powerful command-line utility designed for managing and querying quota information on XFS filesystems. It supports user, group, and project-based quotas, allowing administrators to control disk space and inode usage for individual users, groups, or defined projects. The command can be used in two primary modes: interactive mode, where users can issue multiple commands sequentially, or non-interactive mode, by executing specific commands directly via the -c option. It provides functionalities to report current quota usage, enable or disable quota enforcement, and set or modify hard and soft limits on disk blocks and inodes. Its comprehensive features make it an essential tool for system administrators maintaining XFS-based storage.


title: CAVEATS
content:
For quota limits to be enforced, the XFS filesystem must be mounted with the `quota` option for user/group quotas or `pquota` for project quotas. Enabling or disabling quotas on a mounted filesystem requires the `-x` (expert) option and might necessitate remounting or even rebooting for full effect, especially on older kernels. Project quotas require careful setup and path association.


title: KEY SUBCOMMANDS
content:
While `xfs_quota` can be run interactively, its most common usage involves specifying subcommands via the `-c` option. Here are some fundamental subcommands:<br><br><I><b>report</b></I>: Displays current quota usage for users, groups, or projects. Offers various options for output format and scope.<br><I><b>limit</b></I>: Sets soft and hard limits for disk blocks and inodes for specified users, groups, or projects. Requires expert mode (`-x`).<br><I><b>enable / disable</b></I>: Activates or deactivates quota enforcement for user, group, or project quotas on a specified filesystem. Requires expert mode (`-x`).<br><I><b>state</b></I>: Reports the current state (enabled or disabled) of user, group, and project quotas on a filesystem.<br><I><b>project</b></I>: A comprehensive subcommand for managing project quota definitions, including associating paths with project IDs and setting up project hierarchies. Requires expert mode (`-x`).<br><I><b>df</b></I>: Reports disk space usage and quota information in a format similar to `df`, but with quota details.<br>


title: INTERACTIVE VS. NON-INTERACTIVE MODE
content:
`xfs_quota` can be run in two modes:<br><br><I><b>Interactive Mode</b></I>: Invoke `xfs_quota` without the `-c` option. This drops you into an interactive prompt where you can type multiple commands sequentially. This is useful for complex administration tasks involving several steps.<br><I><b>Non-Interactive Mode</b></I>: Use the `-c` option followed by the command(s) you wish to execute. This is ideal for scripting or executing a single, specific quota operation without user intervention. Example: `xfs_quota -x -c 'limit -u bsoft 1G bhard 2G user1' /mnt/xfsdata`.<br>


title: HISTORY
content:
The XFS filesystem, and consequently its quota capabilities, were originally developed by <B>Silicon Graphics, Inc. (SGI)</B> in the early 1990s. It was integrated into the Linux kernel around 2001. `xfs_quota` is the dedicated tool for managing quotas on XFS filesystems, differentiating it from generic quota tools like `edquota` or `repquota` which are primarily for ext/ext3/ext4 filesystems. Its development has continued as part of the XFS tools suite, adapting to new kernel features and requirements.


title: PARAMETERS
content:
<b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The special file (e.g., /dev/sda1) or volume name of the XFS filesystem to be repaired.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the device is a file image, not a block device. Useful for repairing filesystems stored in regular files.<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the filesystem log to be zeroed out. This is a <i>dangerous</i> option and should only be used as a last resort if the filesystem cannot be mounted due to a corrupt log. It can result in data loss.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a 'dry run' or 'no action' check. The command will simulate the repair process and report what would have been done without actually modifying the filesystem. Useful for assessing damage.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output. Provides more detailed information about the repair process and any errors found.<br><br><b><b>-c <i>cmd</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs a specific repair command or sequence of commands during the repair process. This is for advanced use and allows for targeted fixes.<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints progress messages periodically during the repair process, indicating which stage of the repair is currently active.<br><br><b><b>-o <i>option</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows specifying various repair options, such as 'force_geometry' or 'nohashcheck'. Consult the man page for a full list.<br><br><b><b>-m <i>max_mem_bytes</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum amount of memory (in bytes) to be used by <b>xfs_repair</b>. Useful for limiting memory consumption on systems with limited RAM.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the filesystem is a 'single volume' and disables multi-volume specific checks. Useful for filesystems created before multi-volume support was robust.<br><br>


title: DESCRIPTION
content:
The <b>xfs_repair</b> command is a utility designed to repair corrupted XFS filesystems. It examines an XFS filesystem on a specified device, looking for and attempting to correct inconsistencies. This tool is typically used when an XFS filesystem cannot be mounted, or when an administrator suspects data corruption.<br><br>It operates by analyzing the filesystem's metadata structures, such as allocation groups, inodes, and directories, to identify errors that might have occurred due to power failures, hardware issues, or software bugs. While <b>xfs_repair</b> aims to restore the filesystem to a consistent state, it's crucial to understand that it can sometimes lead to data loss, especially if severe corruption is present or if the `-L` (clear log) option is used carelessly. For this reason, it is <i>always recommended</i> to back up critical data before attempting a repair.<br><br>The command should only be run on an <i>unmounted</i> XFS filesystem to prevent further damage or inconsistencies. If the filesystem cannot be unmounted (e.g., it's the root filesystem), a rescue or live environment might be necessary.


title: CAVEATS
content:
<ul><li><i><b>ALWAYS UNMOUNT FIRST:</b></i> Running <b>xfs_repair</b> on a mounted filesystem can cause severe data corruption and loss.</li><li><i><b>BACKUP DATA:</b></i> Before attempting any repair, especially with the <b>-L</b> option, ensure you have a complete backup of your data. <b>xfs_repair</b> can cause data loss.</li><li><i><b>NOT FOR ONLINE USE:</b></i> This tool is designed for offline repair. For online consistency checks or defragmentation, use other XFS utilities like <b>xfs_check</b> or <b>xfs_fsr</b>.</li><li><i><b>RESCUE MODE:</b></i> If the root filesystem is XFS and corrupted, you will likely need to boot into a rescue disk or live environment to run <b>xfs_repair</b>.</li></ul>


title: HISTORY
content:
XFS was originally developed by Silicon Graphics, Inc. (SGI) in the early 1990s for their IRIX operating system, designed for high-performance computing and large filesystems. It was one of the first 64-bit journaling filesystems. When XFS was ported to Linux around 2001, <b>xfs_repair</b> became an essential component of the XFS tools suite, providing the necessary capability to maintain filesystem integrity. Its development has continued as part of the Linux kernel's XFS support, adapting to new features and addressing identified vulnerabilities or corruption scenarios, solidifying its role as the primary utility for offline XFS filesystem recovery.


title: PARAMETERS
content:
<b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying information about the allocation process, such as the extent information for the new file.<br><br><b>infile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the source file to be copied. This file can be from any filesystem type.<br><br><b>outfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the destination file on the XFS filesystem's realtime section. This path must reside on an XFS filesystem that was created with a realtime section.<br><br>


title: DESCRIPTION
content:
<b>xfs_rtcp</b> is a utility designed to copy files into the dedicated realtime section of an XFS filesystem. This section provides guaranteed I/O bandwidth, making it ideal for applications requiring consistent performance, such as multimedia streaming, video capture, or specialized databases. When a file is copied with <b>xfs_rtcp</b>, the command attempts to allocate it contiguously within the realtime section. If the file cannot be allocated contiguously or if the target filesystem does not have a realtime section, the command will fail.<br><br>This utility is crucial for workloads where predictable I/O latency and throughput are paramount, ensuring that the data is stored in a way that maximizes performance and minimizes fragmentation in a performance-critical area of the disk.


title: CAVEATS
content:
The target XFS filesystem <b>must</b> have been created with a realtime section (e.g., using <i>mkfs.xfs -r</i> options).<br><b>xfs_rtcp</b> attempts to allocate the file contiguously within the realtime section. If a contiguous block of the required size is not available, the command will fail, even if non-contiguous space exists.<br>The file to be copied must fit entirely within the available space of the realtime section. If it exceeds the realtime section's capacity, the command will fail.


title: REALTIME SECTION PURPOSE
content:
The realtime section in XFS is distinct from the regular data section. It's designed to provide 'guaranteed rate I/O' by pre-allocating disk space and attempting to maintain contiguity, which minimizes seek times and rotational latency, leading to more predictable performance. This is achieved by creating the filesystem with a separate device or a dedicated portion of a device specifically for the realtime section, isolated from general filesystem activity.


title: ALLOCATION BEHAVIOR
content:
While <b>xfs_rtcp</b> attempts contiguous allocation, it does not reserve space or guarantee future success. If the realtime section becomes fragmented over time or if a sufficiently large contiguous block is unavailable at the time of copying, <b>xfs_rtcp</b> will fail to copy the file. Regular XFS fragmentation tools (like <i>xfs_fsr</i>) generally do not defragment the realtime section, as its purpose relies on initial contiguous allocation rather than post-creation defragmentation.


title: HISTORY
content:
XFS was developed by Silicon Graphics (SGI) in the early 1990s, specifically for its IRIX operating system, to handle large filesystems and high I/O throughput for multimedia and graphics applications. The realtime section was a core feature from its inception, designed to meet the stringent performance demands of these applications by providing guaranteed bandwidth. XFS was later ported to Linux and became available in the kernel around 2001. The <b>xfs_rtcp</b> utility is part of the <i>xfsprogs</i> package, maintaining its original purpose of facilitating optimal storage for time-sensitive data on XFS filesystems with realtime capabilities. Its usage has continued in environments where predictable storage performance is critical, such as professional media production, high-performance computing, and specialized server applications.


title: PARAMETERS
content:
<b>-gamma <I>float</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the overall gamma correction for all three color channels (red, green, blue) to the specified floating-point value. A value of 1.0 is default (no correction).<br><br><b>-rgamma <I>float</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the gamma correction specifically for the red color channel to the specified floating-point value.<br><br><b>-ggamma <I>float</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the gamma correction specifically for the green color channel to the specified floating-point value.<br><br><b>-bgamma <I>float</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the gamma correction specifically for the blue color channel to the specified floating-point value.<br><br><b>-quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the current gamma settings after modification, showing no output unless an error occurs.<br><br><b>-display <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to. If not specified, the value of the DISPLAY environment variable is used.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>xgamma</b> program version and exits.<br><br>


title: DESCRIPTION
content:
<b>xgamma</b> is a utility program for the X Window System that allows users to query and modify the gamma correction of a display monitor. Gamma correction adjusts the brightness or luminosity of an image, particularly in the mid-tones, to compensate for the non-linear response of display devices. By using <b>xgamma</b>, users can fine-tune the visual appearance of their screen, making colors appear more accurate or adjusting the overall brightness to suit their preferences or environmental lighting conditions.<br><br>It interacts directly with the X server to apply these changes. While useful for quick adjustments, settings applied by <b>xgamma</b> are typically temporary and may be reset upon system reboot, X server restart, or by other display management tools. It's primarily used in X11 environments and does not apply to modern display servers like Wayland.


title: CAVEATS
content:
<I>Temporary Nature</I>: Settings applied by <b>xgamma</b> are usually temporary and are lost upon X server restart, system reboot, or when another application (like a display manager or compositor) overrides them.<br><br><I>X11 Only</I>: <b>xgamma</b> works exclusively with the X Window System. It has no effect in environments using display servers like Wayland, which use different display protocols.<br><br><I>Hardware Dependency</I>: The actual effect of <b>xgamma</b> depends on the display hardware and its drivers. Not all hardware supports fine-grained gamma control through the X server, and results may vary.


title: CHECKING CURRENT GAMMA
content:
To check the current gamma settings without making any changes, simply run <b>xgamma</b> without any arguments. It will output the current red, green, and blue gamma values, for example: <br><I>-> Red Gamma: 1.000, Green Gamma: 1.000, Blue Gamma: 1.000</I>


title: MAKING CHANGES PERSISTENT
content:
To make gamma adjustments persistent across reboots or X server restarts, users often add <b>xgamma</b> commands to their X startup scripts. Common locations include <b>~/.xinitrc</b>, <b>~/.xprofile</b>, or through the autostart settings of their desktop environment (e.g., KDE, GNOME).


title: INTERACTION WITH OTHER TOOLS
content:
<b>xgamma</b> may conflict with or be overridden by other display management tools or desktop environment settings that also manage screen calibration or color profiles. Examples include <b>xrandr</b> (which offers more comprehensive display control) or dedicated display calibration software.


title: HISTORY
content:
<b>xgamma</b> is a legacy utility that has been part of the X Window System's core set of tools for a long time. It provides a simple, direct interface to the X server's gamma correction capabilities, which were essential for calibrating displays in earlier computing environments. Its development has been stable, with most changes being bug fixes or minor enhancements rather than major feature additions. It remains part of the <b>x11-apps</b> or <b>xorg-xgamma</b> package in modern Linux distributions for compatibility with X11 environments.


title: PARAMETERS
content:
<b><i>-rgb</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the Red, Green, and Blue values for the specified colors. These values are typically given as numbers ranging from 0 to 65535 (or 0-255 in hex for simpler representation).<br><br><b><i>-dev filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative device-specific color name database file to be used instead of the default <code>rgb.txt</code>. This allows using custom or application-specific color definitions.<br><br><b><i>-max colors</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of colors to process or display. This is useful for truncating output from very large color databases, limiting the number of entries shown.<br><br><b><i>color ...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A list of one or more color specifications (e.g., 'red', '#FF0000', 'rgb:ff/00/00') to be processed. If no colors are specified, <i>xgc</i> reads and lists the contents of the default color database file.<br><br>


title: DESCRIPTION
content:
<i>xgc</i>, the X Graphic Converter, is a utility primarily used to list the contents of X color name databases, such as the standard <code>rgb.txt</code> file. When invoked without arguments, it reads and displays all color names and their corresponding RGB values from the default color database (typically <code>/usr/share/X11/rgb.txt</code>).<br><br>Alternatively, users can provide specific color names as command-line arguments, and <i>xgc</i> will convert these names into their numerical RGB values, or vice-versa depending on the input and options. It can also be directed to use a different color database file instead of the default. This command is part of the X Window System utilities, making it a specialized tool for developers and users working with graphical applications and color management within the X environment.


title: CAVEATS
content:
<i>xgc</i> is an X Window System utility, meaning it is primarily designed for environments running the X server. While it can often run on systems without a full graphical display, its primary utility is in managing colors relevant to X applications. It's not a general-purpose color converter for non-X contexts.


title: HISTORY
content:
<i>xgc</i> is a long-standing component of the X Window System's utility suite, dating back to early versions of X. It has been maintained as part of the <i>x11-apps</i> or <i>xutils</i> packages, serving its niche role in managing and inspecting the X color name database. Its functionality has remained largely consistent over decades, reflecting the stable nature of the core X color management system.


title: PARAMETERS
content:
<b>-o FILE, --output=FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the generated Portable Object Template (POT) file to the specified <I>FILE</I> instead of the default <I>messages.pot</I>.<br><br><b>-d NAME, --default-domain=NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default domain (basename of the output file) to <I>NAME</I>. For example, <I>-d myapp</I> would create <I>myapp.pot</I>.<br><br><b>-L NAME, --language=NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the programming language of the input files. <I>NAME</I> can be 'C', 'C++', 'Java', 'Python', 'Perl', 'PHP', etc. This helps xgettext understand syntax and string literal definitions.<br><br><b>-k [WORD], --keyword[=WORD]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies additional keywords (function names) to look for, besides the default <I>gettext</I> related functions. If <I>WORD</I> is omitted, all default keywords are disabled.<br><br><b>-c [TAG], --add-comments[=TAG]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts comments from the source code and places them in the POT file. If <I>TAG</I> is provided (e.g., 'TRANSLATORS:'), only comments starting with that tag are extracted.<br><br><b>-j, --join-existing</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Joins the output with an existing POT file. New messages are added, obsolete messages are marked, and existing ones are preserved.<br><br><b>-s, --sort-output</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts the entries in the output POT file by their message ID (<I>msgid</I>). This helps in managing translations and can improve diff readability.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and exits.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information about xgettext and exits.<br><br>


title: DESCRIPTION
content:
xgettext is a fundamental utility within the <b>GNU Gettext</b> internationalization (i18n) framework. Its primary purpose is to scan source code files (supporting a wide range of programming languages like C, C++, Java, Python, Perl, PHP, etc.) for marked translatable strings. It identifies strings that are wrapped in specific function calls (e.g., <I>gettext()</I>, <I>_()</I>, <I>N_()</I>) or other patterns indicating they need translation.<br><br>Upon scanning, xgettext extracts these strings, along with any associated translator comments, and compiles them into a <b>Portable Object Template (POT)</b> file, typically named <I>messages.pot</I>. This POT file acts as a master template for all translatable messages in a project. It serves as the basis from which language-specific <b>Portable Object (PO)</b> files are generated for translators to fill in. xgettext is an essential first step in the localization workflow, enabling developers to separate user-facing text from their code and streamline the translation process.


title: CAVEATS
content:
xgettext relies on source code adhering to specific conventions for marking translatable strings. If strings are not properly wrapped in recognized functions (e.g., <I>_()</I> or <I>gettext()</I>), they will not be extracted.<br><br>While xgettext can parse many languages, its effectiveness depends on the quality of its language parsers and the consistency of the source code. It's not a translation tool itself; it only facilitates the extraction process.<br><br>Overly generic keyword definitions or unintended string literals in code can lead to the extraction of non-translatable text, increasing the burden on translators.


title: INTERNATIONALIZATION WORKFLOW ROLE
content:
In a typical internationalization workflow, xgettext is the initial step. It generates the master template (<I>.pot</I> file). This template is then distributed to translators who use tools to create language-specific translation files (<I>.po</I> files). These <I>.po</I> files are compiled into binary <I>.mo</I> files (using <I>msgfmt</I>) that applications can load at runtime to display translated messages.


title: CUSTOM KEYWORDS AND CONTEXT
content:
xgettext supports custom keywords via the <I>-k</I> option, allowing developers to use their own wrapper functions for translatable strings. For strings that might have the same content but different meanings depending on context (e.g., 'Open' as a verb vs. 'Open' as an adjective), xgettext can also extract 'context' information, enabling translators to provide distinct translations for identical strings in different contexts.


title: HISTORY
content:
xgettext is a core component of the <b>GNU Gettext</b> internationalization system, which was developed to standardize and simplify the process of localizing software. The Gettext project began in the early 1990s, spearheaded by the Free Software Foundation. xgettext has continuously evolved alongside the Gettext library, adding support for new programming languages and improving its parsing capabilities and options, making it a robust and widely used tool for software internationalization. Its development is primarily attributed to Bruno Haible and other contributors to the GNU Gettext project.


title: SYNOPSIS
content:
<b>xh</b> [<i>OPTIONS</i>] [<i>METHOD</i>] <i>URL</i> [<i>REQUEST_ITEM</i>...]<br><br>Where <i>REQUEST_ITEM</i> can be:<br><i>KEY=VALUE</i> (form/data), <i>KEY:=VALUE</i> (JSON data), <i>KEY==VALUE</i> (query parameter), <i>KEY:VALUE</i> (header), <i>@FILE</i> (request body from file), <i>KEY@FILE</i> (file upload), <i>KEY=@FILE</i> (inline file content).


title: PARAMETERS
content:
<b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the whole request as well as the response.<br><br><b>-h, --headers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print only the response headers.<br><br><b>-b, --body</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print only the response body.<br><br><b>-j, --json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force data items to be serialized as JSON (default for POST/PUT/PATCH).<br><br><b>-f, --form</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force data items to be serialized as <i>application/x-www-form-urlencoded</i>.<br><br><b>-F, --multipart</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force data items to be serialized as <i>multipart/form-data</i>.<br><br><b>-x, --pretty {all|colors|format|none}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls output formatting and syntax highlighting.<br><br><b>-o, --output FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Save the response body to a specified file.<br><br><b>-d, --download</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download the response to a file, showing progress.<br><br><b>-a, --auth USER:PASS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide credentials for HTTP basic authentication.<br><br><b>-A, --auth-bearer TOKEN</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide a bearer token for authentication.<br><br><b>-k, --insecure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allow insecure (unverified) SSL/TLS connections.<br><br><b>--follow</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow HTTP 3xx redirects.<br><br><b>-e, --error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit with a non-zero status code on HTTP 4xx or 5xx responses.<br><br>


title: DESCRIPTION
content:
<b>xh</b> is a powerful and intuitive command-line HTTP client, designed as a modern, user-friendly alternative to <i>curl</i> and <i>HTTPie</i>. It prioritizes simplicity, clear output, and convenience, making it effortless to send various HTTP requests and inspect responses. <b>xh</b> intelligently handles common tasks such as JSON formatting, syntax highlighting, and content type detection. It supports a wide range of HTTP methods (GET, POST, PUT, DELETE, etc.), custom headers, query parameters, form data, file uploads, and authentication. Its syntax is highly readable and often requires less typing for common operations. Built in Rust, it ensures speed and reliability, making it an excellent tool for API testing, web development debugging, and general interaction with web services directly from the terminal.


title: CAVEATS
content:
<i>xh</i> is a powerful and generally reliable tool, but users should be aware of a few aspects. While highly feature-rich for most use cases, it might not offer the same exhaustive range of low-level control and obscure options as <i>curl</i>, which has accumulated decades of specialized features. Being a relatively newer utility, <i>xh</i> may not be pre-installed on all Linux distributions, especially older ones, requiring manual installation via package managers or compiling from source. Additionally, its behavior concerning SSL/TLS might depend on the underlying system's certificate stores or specific build configurations.


title: REQUEST ITEM SYNTAX
content:
<i>xh</i> introduces a highly intuitive syntax for constructing HTTP requests. Key-value pairs are used to specify various parts of the request: <b><i>KEY=VALUE</i></b> for form data or request body (defaulting to JSON for POST/PUT), <b><i>KEY:=VALUE</i></b> to force JSON data, <b><i>KEY==VALUE</i></b> for URL query parameters, and <b><i>KEY:VALUE</i></b> for custom HTTP headers. It also supports sending raw request bodies from files (<b><i>@FILE</i></b>) or uploading files as multipart form data (<b><i>KEY@FILE</i></b>).


title: INTELLIGENT OUTPUT FORMATTING
content:
One of <i>xh</i>'s standout features is its intelligent and visually appealing output. It automatically detects and pretty-prints JSON and HTML responses, applying syntax highlighting for improved readability. This makes debugging APIs and inspecting web content directly in the terminal significantly more pleasant and efficient compared to tools that simply dump raw response bodies.


title: HISTORY
content:
<i>xh</i> emerged as a modern spiritual successor to <i>HTTPie</i>, a popular command-line HTTP client. Its development, primarily in Rust, began with the aim of providing a faster, more robust, and equally, if not more, user-friendly alternative. While <i>curl</i> has been the industry standard for decades, its syntax can be verbose and complex for simple tasks. <i>HTTPie</i> simplified this, and <i>xh</i> built upon that simplification, focusing on performance advantages offered by Rust while maintaining or enhancing the intuitive user experience, especially regarding automatic JSON handling and syntax highlighting. It has gained popularity quickly in the developer community for its efficiency and ease of use.


title: SYNOPSIS
content:
<b>xhost</b> [<i>options</i>]<br><b>xhost</b> [[+|-]<i>hostname</i> ...]<br><b>xhost</b> [[+|-]<i>family</i>:<i>name</i> ...]<br><b>xhost</b> [<i>+/-s</i>]


title: PARAMETERS
content:
<b>(no arguments)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current list of hosts that are allowed to connect to the X server.<br><br><b>+</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables access control. When used without a specific host, it means 'allow connections from <i>any</i> host'. This is highly insecure.<br><br><b>-</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables access control. When used without a specific host, it means 'disallow connections from <i>any</i> host' (the secure default).<br><br><b>+<i>hostname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specific <i>hostname</i> or IP address to the access list, allowing it to connect.<br><br><b>-<i>hostname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specific <i>hostname</i> or IP address from the access list, preventing it from connecting.<br><br><b>+<i>family</i>:<i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a host specified by <i>family</i> (e.g., <b>inet</b> for IPv4, <b>ipv6</b> for IPv6, <b>local</b> for local processes, <b>si</b> for server-interpreted user, <b>unix</b> for Unix domain socket) and <i>name</i> to the access list.<br><br><b>-<i>family</i>:<i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a host specified by <i>family</i> and <i>name</i> from the access list.<br><br><b>+s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables host access control (same as <b>xhost -</b>, restoring default behavior).<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables host access control (same as <b>xhost +</b>, allowing all hosts).<br><br><b>-display <i>displayname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server <i>displayname</i> to connect to (e.g., :0.0).<br><br>


title: DESCRIPTION
content:
The <b>xhost</b> command is a utility for managing the access control list of the X server. It allows or disallows connections from specific hosts or users to your X display. By default, X servers are configured to accept connections only from the local machine for security reasons. <b>xhost</b> provides a way to temporarily loosen these restrictions, enabling other machines on a network to display graphical applications on your screen.<br><br>While useful for multi-user environments or for running GUI applications from remote machines without SSH X forwarding, it's crucial to understand the security implications. Loosening access control, especially with commands like <b>xhost +</b>, can expose your X server to unauthorized access, potentially allowing malicious programs to capture keystrokes, view screen contents, or inject commands. For most remote X access, SSH's built-in X forwarding is the recommended and more secure method.


title: CAVEATS
content:
<b>Security Risk:</b> Using <b>xhost +</b> or disabling access control (<b>xhost -s</b>) allows <i>any</i> machine on the network to connect to your X server, making it vulnerable to various attacks like keystroke logging, screen sniffing, and command injection.<br><b>Temporary Changes:</b> Access list modifications made by <b>xhost</b> are not persistent; they are reset when the X server restarts.<br><b>Limited Authentication:</b> <b>xhost</b> relies on host-based authentication, which is less secure than cookie-based methods like MIT-MAGIC-COOKIE-1 (managed by <b>xauth</b>) because IP addresses can be spoofed.<br><b>Not for SSH X Forwarding:</b> <b>xhost</b> is generally not required when using SSH's built-in X forwarding, as SSH securely handles the authentication and tunneling.


title: USAGE EXAMPLES
content:
To show the current access list:<br><i>xhost</i><br><br>To allow a specific host named 'myremotehost' to connect:<br><i>xhost +myremotehost</i><br><br>To disallow 'myremotehost':<br><i>xhost -myremotehost</i><br><br>To allow any local process (e.g., from a Docker container) to connect:<br><i>xhost +local:</i><br><br><b><i>Discouraged:</i></b> To allow any host to connect (major security risk):<br><i>xhost +</i>


title: AUTHENTICATION METHODS
content:
The X Window System supports several methods for authenticating clients. <b>xhost</b> implements a relatively simple <i>host-based access control</i>. A more secure method is <i>cookie-based authentication</i>, primarily using the MIT-MAGIC-COOKIE-1 protocol. This is managed by the <b>xauth</b> command and involves secret keys (cookies) that must be shared between the X server and the client, providing a much stronger level of security compared to merely trusting a hostname or IP address.


title: HISTORY
content:
<b>xhost</b> has been an integral part of the X Window System since its early iterations (X11R1, 1987). It was designed to offer a straightforward host-based mechanism for controlling access to X displays in networked environments, common with X terminals. Over time, more robust and secure authentication methods, such as MIT-MAGIC-COOKIE-1 handled by <b>xauth</b>, gained prominence. Consequently, the use of <b>xhost</b>, especially its less secure forms like <b>xhost +</b>, has become less recommended in modern, internet-connected computing due to significant security implications. However, it still sees use in specific isolated contexts, such as local development setups, Docker containers, or virtual machine integrations where a quick and temporary display access is needed.


title: SYNOPSIS
content:
<b>xidel</b> [<i>OPTIONS</i>] [<i>URL</i> | <i>FILE</i>...] [<i>EXPRESSION</i>...]<br><br><i><br>Common usage examples:</i><br><b>xidel</b> <i>URL</i> <b>-e</b> <i>EXPR</i><br><b>xidel</b> <i>FILE</i> <b>-s</b><br><b>xidel</b> <b>-e</b> <i>EXPR</i> <i>INPUT...</i>


title: PARAMETERS
content:
<b><b>-e</b>, <b>--extract</b> <i>expression</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>XPath</i>, <i>XQuery</i>, or <i>JSONiq</i> <i>expression</i> to evaluate and extract data.<br><br><b><b>-s</b>, <b>--silent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses progress and status messages, useful for scripting.<br><br><b><b>-f</b>, <b>--follow</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follows links recursively, depth can be controlled via <i>XQuery</i>. Use with caution to avoid excessive requests.<br><br><b><b>-o</b>, <b>--output</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the output to the specified <i>file</i> instead of standard output.<br><br><b><b>-H</b>, <b>--header</b> <i>'Header: Value'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a custom HTTP <i>header</i> to the request.<br><br><b><b>-u</b>, <b>--user-agent</b> <i>string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>User-Agent</i> HTTP <i>string</i> for the request.<br><br><b><b>-d</b>, <b>--data</b> <i>data</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends specified <i>data</i> in a POST request body. Can be used multiple times.<br><br><b><b>-X</b>, <b>--request</b> <i>method</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the HTTP <i>method</i> (e.g., <b>GET</b>, <b>POST</b>, <b>PUT</b>) for the request.<br><br><b><b>-v</b>, <b>--variable</b> <i>name=value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines an external <i>variable</i> accessible within the <i>XQuery</i> or <i>JSONiq</i> expression.<br><br><b><b>--output-format</b> <i>format</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output <i>format</i> (e.g., <b>text</b>, <b>xml</b>, <b>html</b>, <b>json</b>) of the extracted data.<br><br><b><b>--xpath</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces interpretation of the <i>expression</i> as <i>XPath</i>.<br><br><b><b>--xquery</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces interpretation of the <i>expression</i> as <i>XQuery</i>.<br><br><b><b>--jsoniq</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces interpretation of the <i>expression</i> as <i>JSONiq</i>.<br><br><b><b>--download</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Downloads the specified URLs directly, bypassing <i>XQuery</i> processing. Similar to <b>wget</b>.<br><br><b><b>--connect-timeout</b> <i>seconds</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a maximum time (in <i>seconds</i>) for the connection to be established.<br><br>


title: DESCRIPTION
content:
<b>xidel</b> is a versatile command-line tool designed for parsing, transforming, and extracting data from HTML, XML, and JSON documents. It uniquely combines the capabilities of a web downloader (like <i>wget</i> or <i>curl</i>) with powerful querying languages: <i>XPath 3.1</i>, <i>XQuery 3.1</i>, and <i>JSONiq</i>. This allows users to download web pages and then immediately apply sophisticated queries to extract specific data, such as links, text content, or structured information from tables.<br><br>Beyond simple data extraction, <b>xidel</b> supports complex operations including form submission, managing sessions, and handling dynamic content. Its ability to process multiple inputs, execute external XQuery/JSONiq modules, and format output in various ways makes it an invaluable asset for web scraping, data automation, and general document processing tasks, bridging the gap between raw data fetching and structured data manipulation.


title: CAVEATS
content:
<i>xidel</i> does not execute client-side JavaScript, meaning it cannot interact with or render dynamic content that relies heavily on JavaScript execution. For such dynamic web pages, alternative tools like headless browsers (e.g., Puppeteer, Selenium) are required. Its powerful query languages, <i>XPath</i>, <i>XQuery</i>, and <i>JSONiq</i>, can have a steep learning curve for new users. Additionally, recursive fetching with <b>-f</b> should be used with caution as it can quickly consume bandwidth and system resources, potentially leading to rate limiting or even IP blocking.


title: LANGUAGE SUPPORT
content:
<b>xidel</b> provides comprehensive support for <b>XPath 3.1</b>, <b>XQuery 3.1</b>, and <b>JSONiq</b>, enabling highly precise and powerful data extraction and manipulation capabilities. This makes it suitable for complex transformations beyond simple text matching or regular expressions.


title: HANDLING MULTIPLE INPUTS
content:
<b>xidel</b> can process multiple URLs or local files sequentially or concurrently, allowing for batch processing of documents or websites. This is often combined with recursive fetching or iterative scripting, making it efficient for large-scale data collection.


title: HISTORY
content:
<b>xidel</b> was originally developed by <i>Marc Loevenich</i> and first released around 2011. It was designed to fill a niche by combining robust HTML/XML/JSON parsing with the expressive power of W3C standard query languages like <i>XPath</i> and <i>XQuery</i> directly from the command line. Unlike other tools that might require chaining <i>curl</i> or <i>wget</i> with <i>xmllint</i> or custom scripts, <b>xidel</b> aimed to provide an all-in-one solution for sophisticated web data extraction and transformation. Its development has continued to add support for newer standards like <i>JSONiq</i> and improve HTML5 parsing, making it a continuously relevant tool for modern web scraping and data processing tasks.


title: SYNOPSIS
content:
<b>xinit</b> [<I>client</I>] [<I>options</I> ...] <I>--</I> [<I>server</I>] [<I>display</I>] [<I>options</I> ...]<br>Or, more commonly, just <b>xinit</b>


title: PARAMETERS
content:
<b>client</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the initial client program to be run (e.g., a window manager or desktop environment session). Defaults to <b>xterm</b> if not specified.<br><br><b>client options</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Additional command-line arguments to pass directly to the client program.<br><br><b>--</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A mandatory separator indicating the end of client arguments and the beginning of server arguments. All arguments after this separator are passed to the X server.<br><br><b>server</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the X server executable (e.g., <b>Xorg</b>). Defaults to <b>X</b>.<br><br><b>display</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the display number for the X server (e.g., <I>:0</I>). Defaults to the next available display number.<br><br><b>server options</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Additional command-line arguments to pass directly to the X server program.<br><br>


title: DESCRIPTION
content:
<b>xinit</b> is a low-level utility used to manually start the X Window System server and a first client program. It provides a flexible way to launch a custom X session, bypassing traditional display managers like GDM or SDDM. When invoked, <b>xinit</b> looks for two user-specific shell scripts in the home directory: <i>~/.xserverrc</i> to define how the X server should be started, and <i>~/.xinitrc</i> to specify the initial client applications (typically a window manager or desktop environment and other essential programs). If these files are not found, <b>xinit</b> defaults to starting the <b>X</b> server and an <b>xterm</b> client. It's often wrapped by the <b>startx</b> script for convenience, which provides a more user-friendly interface for common setups.


title: CAVEATS
content:
<b>xinit</b> is a lower-level utility; <b>startx(1)</b> or display managers (like GDM, SDDM) are typically preferred for daily use.<br>Exiting the primary client application (e.g., <b>xterm</b> or your window manager) will usually terminate the X server started by <b>xinit</b>.<br>Proper configuration of <i>~/.xinitrc</i> is crucial for a functional graphical session.


title: THE .XINITRC FILE
content:
This file, located in the user's home directory (<i>~/.xinitrc</i>), is a shell script executed by <b>xinit</b> to start client applications. It commonly includes commands to:<br><ul><li>Set environment variables.</li><li>Load X resources (e.g., <b>xrdb</b>).</li><li>Start background processes (e.g., notification daemons, compositors).</li><li>Launch the window manager or desktop environment session (this is typically the last command and should be an <code>exec</code> command so that when it exits, <b>xinit</b> also exits).</ul>If this file does not exist, <b>xinit</b> defaults to running <b>xterm</b>.


title: THE .XSERVERRC FILE
content:
This optional file, located in the user's home directory (<i>~/.xserverrc</i>), is a shell script executed by <b>xinit</b> to determine how the X server itself should be started. It can be used to specify a particular X server executable or pass specific options to it. For example, it might contain <code>exec Xorg -vt7</code> to start <b>Xorg</b> on virtual terminal 7. If this file does not exist, <b>xinit</b> defaults to starting the <b>X</b> server with default options.


title: HISTORY
content:
<b>xinit</b> has been a fundamental component of the X Window System since its early development. It provides the most basic and direct method for starting an X server and an initial client, serving as the foundation upon which more sophisticated session management tools like display managers were built. Its continued relevance lies in its flexibility for custom setups and debugging, offering a direct interface for advanced users to control their X sessions.


title: SYNOPSIS
content:
<b><i>xinput</i></b> [<i>options</i>] [<i>device</i>]<br><b><i>xinput</i></b> {<i>list</i> | <i>list-props</i> | <i>set-prop</i> | <i>set-button-map</i> | <i>enable</i> | <i>disable</i> | <i>test</i> | <i>create-master</i> | <i>remove-master</i> | <i>reattach</i> | <i>set-mode</i> | <i>map-to-output</i> | <i>set-ptr-follower</i>} [<i>arguments</i>]


title: PARAMETERS
content:
<b><i>list</i> [--short | --long | --name-only]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available input devices and their properties. Use <i>--short</i> for a concise list, <i>--long</i> for detailed information, or <i>--name-only</i> to show only device names.<br><br><b><i>list-props</i> &lt;device&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all properties and their current values for a specified device. Device can be an ID or name.<br><br><b><i>set-prop</i> &lt;device&gt; &lt;property&gt; &lt;value&gt; [...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a property for a device to a specified value. Property can be an ID or name.<br><br><b><i>set-button-map</i> &lt;device&gt; &lt;button1&gt; [&lt;button2&gt; ...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the button map for a device. Each number in the list represents the logical button corresponding to the physical button.<br><br><b><i>enable</i> &lt;device&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the specified input device.<br><br><b><i>disable</i> &lt;device&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the specified input device.<br><br><b><i>test</i> &lt;device&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts a test mode for the device, printing events as they occur. Useful for debugging.<br><br><b><i>create-master</i> &lt;name&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new master device (pointer and keyboard) with the specified name. Advanced usage for multi-pointer X.<br><br><b><i>remove-master</i> &lt;name&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a previously created master device.<br><br><b><i>reattach</i> &lt;slave&gt; &lt;master&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reattaches a slave device to a different master device.<br><br><b><i>set-mode</i> &lt;device&gt; ABSOLUTE|RELATIVE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the operating mode of a device to either absolute (e.g., graphics tablets) or relative (e.g., mice).<br><br><b><i>map-to-output</i> &lt;device&gt; &lt;output&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maps a device (typically a graphics tablet) to a specific monitor output, identified by name (e.g., DVI-I-1).<br><br><b><i>set-ptr-follower</i> &lt;master&gt; &lt;slave&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes a slave device follow the pointer of a specified master device. For devices like pen tablets that share the same cursor as the mouse.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>xinput</i> program version and exits.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a summary of command usage and exits.<br><br>


title: DESCRIPTION
content:
<i><b>xinput</b></i> is a utility to configure and test input devices in the X Window System. It allows users to query properties of input devices (like mice, keyboards, touchpads, graphics tablets), change their settings, and perform various debugging tasks. It interacts with the X Input Extension (XI), providing a command-line interface to manage devices registered with the X server. <br><br>Common uses include enabling or disabling touchpads, adjusting mouse sensitivity, remapping buttons, and mapping devices to specific monitor outputs, which is particularly useful for graphic tablets on multi-monitor setups. It's an indispensable tool for customizing the behavior of peripheral devices in a desktop Linux environment, especially when default system settings are insufficient or when troubleshooting device-related issues.


title: CAVEATS
content:
Settings made with <i><b>xinput</b></i> are usually temporary and will be lost upon reboot or X server restart. For persistent configurations, changes must be written to Xorg configuration files, typically in <i>/etc/X11/xorg.conf.d/</i>. Some operations may require root privileges or proper X server permissions. Device names or IDs can change after a reboot, so using device names is often more robust for scripts.


title: DEVICE IDENTIFICATION
content:
Devices can be identified by their ID number or their name. While IDs are numerical and might change after reboot or hot-plugging, names are usually more stable for scripting and repeated use. Use <i>xinput list</i> to find current IDs and names.


title: PROPERTIES AND ATOM NAMES
content:
Device properties are identified by names or atom IDs. When setting properties, you can typically use the human-readable property name as listed by <i>xinput list-props</i>. For boolean properties, 0 typically means false/disabled, and 1 means true/enabled.


title: MASTER AND SLAVE DEVICES (XI2)
content:
The X Input Extension 2 (XI2) introduces the concept of master and slave devices. Master devices are logical pairs (pointer and keyboard) that can have multiple slave devices (physical hardware like a mouse or touchpad) attached to them. This allows for advanced configurations, such as multiple independent cursors on the same screen (Multi-Pointer X).


title: HISTORY
content:
<i><b>xinput</b></i> is part of the X.Org project and has been the primary command-line tool for interacting with the X Input Extension (XI) and its successor, XI2 (X Input 2). XI2 brought significant improvements, including better multi-pointer support, device hot-plugging, and more granular control over input events, making <i><b>xinput</b></i> an essential utility for modern X-based desktop environments. It serves as the user-facing component for configuring the input stack that handles various device drivers.


title: SYNOPSIS
content:
<I>xkbbell</I> [-display <I>display</I>] [-force | -noforce] [-keyboard <I>kbd_id</I>] [-id <I>id</I>] [-bell <I>bell_name</I>] [-percent <I>percent</I>] [-pitch <I>pitch</I>] [-duration <I>duration</I>]


title: PARAMETERS
content:
<b>-display <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server display to connect to. If not specified, it defaults to the value of the <B>DISPLAY</B> environment variable.<br><br><b>-force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the bell to ring, even if the keyboard bell is currently disabled by the X server's configuration (e.g., via <I>xset b off</I>).<br><br><b>-noforce</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only rings the bell if the keyboard bell is enabled in the X server's configuration. This is the default behavior.<br><br><b>-keyboard <I>kbd_id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ID of a particular keyboard device for which the bell event should be generated. Useful in multi-input device setups.<br><br><b>-id <I>id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <B>-keyboard</B>, specifies the ID of a specific device to ring the bell for. This is a more general option that can apply to any input device that supports a bell.<br><br><b>-bell <I>bell_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a named bell to ring. This option is less commonly used and depends on the XKB configuration supporting named bells.<br><br><b>-percent <I>percent</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the volume of the bell as a percentage from 0 (silent) to 100 (maximum volume). The actual perceived volume depends on system audio settings.<br><br><b>-pitch <I>pitch</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the pitch of the bell in Hertz (Hz). A higher value indicates a higher-pitched sound.<br><br><b>-duration <I>duration</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the duration of the bell sound in milliseconds (ms). A longer duration means a longer sound.<br><br>


title: DESCRIPTION
content:
<I>xkbbell</I> is a utility program for the X Window System that requests the X server to generate a keyboard bell event. This event can result in an audible sound, a visual flash on the screen, or both, depending on the X server's configuration and the user's settings. It is commonly used by applications to provide simple feedback or to signal an error condition to the user. While traditionally associated with an audible 'beep', modern X servers and desktop environments often translate the bell event into a visual flash or a more configurable system sound, allowing for a less intrusive user experience. The command provides options to control various aspects of the bell, such as its volume, pitch, and duration, as well as to force the bell even if it's otherwise disabled by user settings. It's an essential component for basic system feedback within an X environment.


title: CAVEATS
content:
The actual audible or visual output of the bell is highly dependent on the X server's configuration and the desktop environment. If <I>xset b off</I> has been used, <I>xkbbell</I> will not produce a sound unless the <B>-force</B> option is used. In some modern desktop environments, the X bell event might be remapped to a theme-specific sound or a visual notification, potentially ignoring pitch, duration, or volume settings. <br> <br> <I>xkbbell</I> is specific to the X Window System and will not work in a console-only Linux environment or on Wayland-based systems without an XWayland compatibility layer.


title: AUDIBLE VS. VISUAL BELL
content:
Historically, the X keyboard bell primarily referred to an audible 'beep' from the system's internal speaker. However, with modern X servers and desktop environments, the bell event is often configured to produce a visual flash on the screen (e.g., flashing the window title bar or the entire screen briefly) or to play a system sound file through the audio system. This allows for more configurable and less intrusive feedback, especially on systems without an internal PC speaker or where an audible beep is undesirable.


title: HISTORY
content:
<I>xkbbell</I> is part of the <B>xkbutils</B> package, which provides utilities for configuring and using the X Keyboard Extension (XKB). The XKB extension itself was introduced to provide a more flexible and powerful way to manage keyboard layouts and behavior within the X Window System, replacing the simpler traditional keyboard mapping. <I>xkbbell</I> emerged as a standard tool within this framework, allowing applications and users to reliably trigger the X server's bell event, evolving with the X server's capabilities to support both audible and visual bell feedback.


title: SYNOPSIS
content:
<b>xkbcomp</b> [-w <i>level</i>] [-o <i>file</i>] [-R <i>directory</i>] [<i>source files</i>] [<i>target device</i>]<br><br><i>source files</i> typically refer to <b>XKB</b> definition files or references to configurations (e.g., '<i>xkbmap :0</i>' to get the current map from the server).<br><i>target device</i> specifies where the compiled map should be sent. This is commonly an <b>X</b> display (e.g., <i>:0</i>) to load the map, or <i>xkb</i> to print the compiled source to standard output, or <i>file</i> to output to a binary file.


title: PARAMETERS
content:
<b><b>-w</b> <i>level</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the warning level for the compiler. Higher levels (e.g., 10) provide more verbose warning messages during compilation.<br><br><b><b>-o</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output <i>file</i> where the compiled <b>XKB</b> map will be written. If omitted, the output may be directed to the specified target device or standard output.<br><br><b><b>-R</b> <i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default root directory for <b>XKB</b> configuration files. This specifies where <i>xkbcomp</i> should begin searching for <b>XKB</b> definitions.<br><br><b><b>-I</b> <i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specified <i>directory</i> to the list of paths that <i>xkbcomp</i> searches when resolving included <b>XKB</b> files.<br><br><b><b>-v</b> <i>level</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the verbosity level for compiler messages. A higher <i>level</i> results in more detailed output, useful for debugging.<br><br><b><b>-xkbmap</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>xkbcomp</i> to load the specified <i>file</i> directly as an <b>XKB</b> map description.<br><br><b><b>-p</b> (or <b>-print</b>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <i>xkbcomp</i> to print the compiled <b>XKB</b> map source (in its textual representation) to standard output, rather than loading it onto an <b>X server</b> or writing it to a file.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief summary of command-line options and usage information.<br><br>


title: DESCRIPTION
content:
<i>xkbcomp</i> is a crucial utility in the <b>X Window System</b> that compiles <b>XKB</b> (X Keyboard Extension) keyboard description files into a binary format. This binary representation can then be loaded and interpreted by an <b>X server</b> or other <b>XKB</b>-aware applications. <br><br>The <b>XKB</b> system offers a powerful and flexible method for defining intricate keyboard layouts, including symbols, keymaps, and various behavioral aspects. It greatly surpasses older keyboard configuration tools like <i>xmodmap</i> by supporting features such as multiple keyboard groups, dead keys, sticky keys, and complex modifier handling. <i>xkbcomp</i> is the core component that processes the human-readable text files (which detail rules, layouts, symbols, types, and compatibility maps) and translates them into the optimized binary data essential for the <b>X server</b> to manage all keyboard input.


title: CAVEATS
content:
Configuring <b>XKB</b> can be intricate due to its highly customizable and modular structure. Issues often arise from incorrect file paths, syntax errors in <b>XKB</b> definition files, or conflicts between different components (e.g., rules, symbols, types). An improperly compiled <b>XKB</b> map can lead to a non-functional or incorrectly behaving keyboard within the <b>X</b> session.


title: XKB CONFIGURATION FILE STRUCTURE
content:
<b>XKB</b> configuration files are typically organized into a hierarchical directory structure, commonly found in <i>/usr/share/X11/xkb/</i> or <i>/etc/X11/xkb/</i>. This includes subdirectories for 'rules', 'layouts', 'symbols', 'geometry', and 'types'. <i>xkbcomp</i> reads and merges these individual components to form a complete keyboard description.


title: APPLYING MAPS TO AN X DISPLAY
content:
One of the most common uses of <i>xkbcomp</i> is to apply a new keyboard map directly to a running <b>X</b> display. For instance, the command '<i>xkbcomp my_layout.xkb :0</i>' would compile the <i>my_layout.xkb</i> file and immediately load the resulting keyboard map onto the <b>X</b> server running on display <i>:0</i>.


title: HISTORY
content:
The <b>X Keyboard Extension (XKB)</b> was introduced in the early 1990s as a sophisticated replacement for the simpler, less flexible <i>xmodmap</i> utility. It aimed to provide comprehensive support for international keyboard layouts, dead keys, and complex modifier interactions within the <b>X Window System</b>. <i>xkbcomp</i> has been fundamental to the <b>XKB</b> system since its inception, acting as the compiler that translates human-readable <b>XKB</b> definitions into the optimized binary format consumed by the <b>X server</b>. Its development has closely paralleled the evolution of <b>X11</b> and its increasing demand for advanced keyboard handling.


title: SYNOPSIS
content:
<b>xkbevd</b> [<i>-display &lt;display&gt;</i>] [<i>-verbose</i>] [<i>-nostart</i>] [<i>-clients &lt;number&gt;</i>] [<i>-nofork</i>] [<i>-file &lt;file&gt;</i>] [<i>-option &lt;option&gt;</i>]


title: PARAMETERS
content:
<b><b>-display</b> <i>&lt;display&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to connect to.<br><br><b><b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints additional diagnostic messages to stderr.<br><br><b><b>-nostart</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not attempt to start the XKB extension if it is not already running.<br><br><b><b>-clients</b> <i>&lt;number&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of simultaneous client connections (default is 10).<br><br><b><b>-nofork</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>xkbevd</b> from detaching from the controlling terminal and running in the background.<br><br><b><b>-file</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to read event-to-command mappings from.<br><br><b><b>-option</b> <i>&lt;option&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes an option directly to the XKB extension initialization.<br><br>


title: DESCRIPTION
content:
<b>xkbevd</b> is the <I>X Keyboard Extension Event Daemon</I>, a utility designed to monitor and react to events generated by the X Keyboard Extension (XKB). <br><br>When specific XKB events occur, such as changes in keyboard group (layout), symbols, or modifier states (like Caps Lock or Num Lock), <b>xkbevd</b> can execute predefined shell commands or scripts. This enables dynamic automation and customization based on the keyboard's state within the X Window System. <br><br>It typically reads its event-to-command mappings from a configuration file, allowing users or desktop environments to define intricate reactions. It runs in the background, continuously observing the X display for relevant keyboard state changes. While modern desktop environments often handle basic keyboard events, <b>xkbevd</b> remains valuable for advanced custom setups and specific automation needs related to XKB.


title: CAVEATS
content:
<b>xkbevd</b> operates solely within the X Window System and relies on the X Keyboard Extension (XKB) being active.<br><br>Its functionality might be superseded or integrated into modern desktop environments (like GNOME or KDE), which often have their own internal event handlers for keyboard state changes, potentially making direct usage less common for general users.<br><br>The daemon's behavior is entirely dependent on its configuration file, which requires understanding XKB event types and basic shell scripting.


title: CONFIGURATION FILE
content:
<b>xkbevd</b> reads its instructions from a configuration file, typically found at <i>~/.xkbevd</i> or a system-wide path like <i>/etc/X11/xkbevd/xkbevd.rc</i>. This file contains lines that map specific XKB event types to shell commands. For example, a line might specify that when the keyboard's symbol set changes (e.g., switching between English and a different language layout), a particular script should be executed. The file format is simple, often with lines like: <i>'event_type' 'shell_command'</i>.


title: MONITORED EVENT TYPES
content:
<b>xkbevd</b> can monitor various XKB event types. Common ones include:<br><i><b>symbols</b>: Changes in the active keyboard symbols (layout).<br><b>group</b>: Changes in the active keyboard group.<br><b>modifier</b>: Changes in modifier states (e.g., Caps Lock, Num Lock, Scroll Lock).<br><b>bell</b>: When a keyboard bell event occurs.<br><b>message</b>: Custom messages sent via XKB.</i><br>These events allow for fine-grained control over reactions to keyboard state changes.


title: HISTORY
content:
<b>xkbevd</b> emerged as part of the X Keyboard Extension (XKB) utilities, developed to provide a more robust and flexible keyboard configuration system than the older <B>xmodmap</B>. XKB itself was introduced in X11 Release 6 (X11R6) to handle complex keyboard layouts, multiple languages, and accessibility features.<br><br><b>xkbevd</b>'s role was to provide a daemon that could monitor the new, richer set of events generated by the XKB extension and allow for programmatic responses. This capability enabled advanced features like on-screen indicators for Caps Lock/Num Lock, dynamic keyboard backlighting, or specific application adjustments triggered by keyboard layout changes, which were not easily achievable with previous tools. While its direct use might have lessened with the rise of comprehensive desktop environments, it remains a fundamental component for deep XKB integration and specialized scripting.


title: PARAMETERS
content:
<b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays usage information and exits.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version number of the <b>xkbprint</b> utility and exits.<br><br><b><b>-o</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file where the keymap representation will be written. If this option is omitted, the output is directed to standard output (<i>stdout</i>).<br><br><b><b>-color</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables colorized output, which can significantly improve readability and differentiate various components of the keymap description.<br><br><b><b>-level</b> <i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the detail level for the output. The <i>&lt;level&gt;</i> typically ranges from <i>0</i> (for a very brief summary) to <i>10</i> (for maximum detail, including internal XKB structures). A higher level provides more comprehensive information.<br><br><b><b>-format</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Common formats include <i>text</i> (the default) and <i>html</i>. Not all installations may support all formats.<br><br><b><b>-raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the raw XKB components as they are defined, without much interpretation or user-friendly formatting. This is useful for detailed debugging.<br><br><b><b>-brief</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a concise summary of the keymap, focusing on essential information and omitting verbose details. This is equivalent to using <i>-level 0</i>.<br><br><b><b>-layout</b> <i>&lt;layout&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific keyboard layout to print from the server's configuration, particularly useful when multiple layouts are defined.<br><br><b><i>&lt;filename&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional argument specifying the path to an XKB keymap definition file (e.g., a <i>.xkb</i> file) to be processed. If no <i>&lt;filename&gt;</i> is provided, <b>xkbprint</b> reads the current XKB configuration directly from the X server.<br><br>


title: DESCRIPTION
content:
<b>xkbprint</b> is a utility designed to generate a human-readable, textual representation of an XKB (X Keyboard Extension) keymap. It can read a keymap description either from a specified file or directly from the current X server's active configuration. The output provides a detailed view of the keyboard layout, including symbol mappings, modifier definitions, and other XKB components. This tool is invaluable for debugging complex XKB configurations, documenting current keyboard setups, or simply understanding how a particular keymap is structured. It essentially serves as the inverse of <b>xkbcomp</b>, allowing users to inspect the compiled XKB configuration in a structured format. Users can control the level of detail and output format to suit their specific needs.


title: CAVEATS
content:
<b>xkbprint</b> may not be installed by default on all Linux distributions, typically requiring the installation of the <i>xorg-xkb-utils</i> or similar package.<br>The output can be extremely verbose, especially at higher detail levels, which might be overwhelming for casual inspection.<br>It reflects the <i>compiled</i> XKB map, not necessarily the exact runtime state if temporary key remappings were made by other utilities like <b>xmodmap</b> without recompiling the XKB map.


title: USAGE EXAMPLES
content:
Here are a few common ways to use <b>xkbprint</b>:<br><br>To print a brief summary of the current XKB keymap from the active X server:<br><i>xkbprint -brief</i><br><br>To get a highly detailed and colorized output of an XKB definition file, saving it to a specific file:<br><i>xkbprint -level 10 -color -o my_keyboard_layout.txt /usr/share/X11/xkb/symbols/us</i><br><br>To print the raw XKB components of the current server configuration:<br><i>xkbprint -raw</i>


title: HISTORY
content:
<b>xkbprint</b> is an integral part of the X Keyboard Extension (XKB) utilities, developed to support the advanced keyboard configuration capabilities of the X Window System. XKB was introduced to overcome the limitations of older keyboard mapping tools like <b>xmodmap</b>, providing a more robust and flexible framework for handling diverse keyboard layouts and behaviors. As XKB configurations grew in complexity, tools like <b>xkbprint</b> became essential for developers and users to inspect, debug, and understand the intricate details of their keyboard setups. Its development has paralleled the evolution of X.Org Server and its input handling mechanisms.


title: PARAMETERS
content:
<b><b>-display</b> <i><display></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to.<br><br><b><b>-indicator</b> <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which indicator name to display. If not specified, all indicators are shown.<br><br><b><b>-font</b> <i><fontname></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to use for displaying the indicator names.<br><br><b><b>-size</b> <i><size></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the size of the window and the font in pixels.<br><br><b><b>-delay</b> <i><milliseconds></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the delay between updates of the indicator state in milliseconds. Default is 100 milliseconds.<br><br><b><b>-padding</b> <i><pixels></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the padding around the indicator text in pixels.<br><br>


title: DESCRIPTION
content:
<i>xkbvleds</i> is a utility for the X Window System that shows the current state of the keyboard LEDs (Caps Lock, Num Lock, Scroll Lock) for a specified XKB (X Keyboard Extension) keyboard.<br><br>It provides a visual representation of these indicators, which can be useful when physical keyboard LEDs are not available or visible, or for debugging XKB configurations. The command queries the X server to get the active state of the keyboard and then updates its display accordingly. It's often used as part of a desktop environment or a status bar to provide immediate feedback on keyboard mode.


title: CAVEATS
content:
<b>Limitations:</b><br><i>xkbvleds</i> requires an X server to run, as it's a graphical utility. It only displays XKB indicators, not direct hardware LED states. Its functionality is heavily dependent on proper XKB configuration; misconfiguration might lead to discrepancies between displayed and physical states. The output is a graphical window, not text to standard output, making it unsuitable for scripting where text parsing is required.


title: GRAPHICAL OUTPUT
content:
Unlike many command-line utilities, <i>xkbvleds</i> opens a small graphical window to display the LED states. This window is typically non-interactive and updates automatically to reflect changes in the keyboard's state.


title: DEFAULT BEHAVIOR
content:
When run without any options, <i>xkbvleds</i> connects to the default X display and shows the state of all standard indicators (e.g., Caps Lock, Num Lock, Scroll Lock) using default font and sizing, continuously updating its display.


title: HISTORY
content:
<i>xkbvleds</i> is part of the <i>xkbutils</i> package, which provides various utilities for the X Keyboard Extension (XKB). XKB was introduced to provide a more flexible and powerful keyboard management system than the original X protocol. <i>xkbvleds</i> serves as a simple visual debugger and status display for this system. Its development likely tracks the evolution and maintenance of the XKB extension itself within the X.Org project, ensuring compatibility and functionality with modern X environments.


title: PARAMETERS
content:
<b><b>-compact</b>, <b>--compact</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current XKB state on a single line, updating in place instead of printing new lines for each state change.<br><br><b><b>-version</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the program version information and exits.<br><br><b><b>-help</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and exits.<br><br>


title: DESCRIPTION
content:
<i>xkbwatch</i> is a lightweight command-line utility for the X Window System that provides real-time monitoring of the X Keyboard Extension (XKB) state. It displays the active keyboard indicators, including modifier keys (like <b>Shift</b>, <b>Control</b>, <b>Alt</b>, <b>Super</b>), keyboard groups (different layouts such as English, German), and other XKB status information such as <b>Caps Lock</b> or <b>Num Lock</b>.<br><br>This tool is particularly useful for debugging keyboard configuration issues, understanding complex XKB layouts, or simply observing how keyboard states change in response to user input or application actions. It helps users visualize which keyboard components are active, which can be invaluable when troubleshooting unexpected key behavior or when developing applications that interact with the keyboard state. <i>xkbwatch</i> continuously updates its display, making it a dynamic tool for keyboard diagnostics.


title: CAVEATS
content:
<i>xkbwatch</i> requires an active X server connection to function, as it monitors the state of the X Keyboard Extension. Its output can be verbose without the <b>-compact</b> option, logging every state change. It is primarily a diagnostic and debugging tool for XKB configurations, not for general user interaction or keyboard configuration.


title: OUTPUT FORMAT
content:
The output of <i>xkbwatch</i> typically displays active keyboard indicators. This includes modifier states (e.g., <b>Shift</b>, <b>Lock</b>, <b>Control</b>, <b>Mod1</b>-<b>Mod5</b>), which correspond to keys like Shift, Caps Lock, Ctrl, Alt, and Super/Meta keys. It also shows the currently active keyboard group (e.g., <b>Group1</b>, <b>Group2</b>), indicating which keyboard layout is currently in use. Other indicators like <b>NumLock</b> or <b>ScrollLock</b> may also be displayed if active.<br><br>Without the <b>-compact</b> option, each change in state results in a new line of output, providing a continuous log of keyboard state transitions. When <b>-compact</b> is used, the output updates on a single line, making it suitable for display in a terminal without scrolling.


title: HISTORY
content:
<i>xkbwatch</i> is part of the <b>x11-xkb-utils</b> package, which provides essential utilities for interacting with the X Keyboard Extension (XKB). XKB itself was introduced to the X Window System to offer a more flexible and powerful keyboard configuration system than its predecessor, Xmodmap. As an integral diagnostic tool, <i>xkbwatch</i> allows users and developers to inspect the real-time state managed by XKB. Its core functionality has remained consistent, serving its specific role as a reliable state monitor within the XKB ecosystem since its widespread adoption.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version number and exits.<br><br><b><b>-w <i>FILE</i></b>, <b>--wordfile=<i>FILE</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative word list <i>FILE</i> to use instead of the default system word list.<br><br><b><b>-l <i>NUM</i></b>, <b>--length=<i>NUM</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a passphrase composed of <i>NUM</i> words. The default is 4.<br><br><b><b>-s <i>CHAR</i></b>, <b>--separator=<i>CHAR</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses <i>CHAR</i> as the separator between words in the passphrase. The default is a space.<br><br><b><b>-c</b>, <b>--capitalize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Capitalizes the first letter of each word in the passphrase.<br><br><b><b>-n <i>NUM</i></b>, <b>--numwords=<i>NUM</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A synonym for <b>--length</b>, specifying the number of words.<br><br><b><b>-u</b>, <b>--upper</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Deprecated)</i> Forces at least one uppercase letter in the passphrase. It is recommended to use <b>--capitalize</b> instead.<br><br><b><b>-d</b>, <b>--digits</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures that the generated passphrase includes at least one digit.<br><br><b><b>-p</b>, <b>--symbols</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures that the generated passphrase includes at least one symbol.<br><br><b><b>-o <i>NUM</i></b>, <b>--output-count=<i>NUM</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates <i>NUM</i> passphrases. The default is 1.<br><br><b><b>-m <i>MIN_LENGTH</i></b>, <b>--min-length=<i>MIN_LENGTH</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the word list to only include words with a minimum length of <i>MIN_LENGTH</i> characters. Default is 5.<br><br><b><b>-M <i>MAX_LENGTH</i></b>, <b>--max-length=<i>MAX_LENGTH</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the word list to only include words with a maximum length of <i>MAX_LENGTH</i> characters. Default is 9.<br><br><b><b>-f</b>, <b>--valid-chars</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the internal word list to only include words containing letters [a-z], digits [0-9], hyphens, and apostrophes.<br><br><b><b>--no-strict-symbols</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows words containing non-alphanumeric symbols to be included in the word list.<br><br><b><b>--no-acronyms</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes acronyms (all-uppercase words) from the word list.<br><br><b><b>--no-proper-nouns</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes proper nouns (capitalized words) from the word list.<br><br><b><b>--no-special-chars</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes words containing special characters (like apostrophes or hyphens) from the word list.<br><br><b><b>--keep-symbols</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retains symbols (e.g., apostrophes, hyphens) within words from the word list. By default, they are stripped.<br><br><b><b>--alt-caps</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Randomly capitalizes letters within words of the generated passphrase, rather than just the first letter.<br><br><b><b>--alt-nums</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Randomly inserts numbers into words of the generated passphrase.<br><br><b><b>--alt-symbols</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Randomly inserts symbols into words of the generated passphrase.<br><br><b><b>--prune</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prunes the word list to remove words that reduce entropy (e.g., common or too similar words). This can significantly improve passphrase strength and requires <i>gdbm</i> or <i>db</i> support.<br><br><b><b>--unprune</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unprunes a previously pruned word list, restoring it to its original state.<br><br><b><b>--stdin</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads words from standard input (stdin) instead of a file.<br><br><b><b>--store-blacklist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stores generated passphrases in a blacklist to prevent their re-use.<br><br><b><b>--no-blacklist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the use of the default blacklist.<br><br><b><b>--lang=<i>LANG</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific language word list (e.g., 'en', 'es', 'fr', 'de'). Requires language-specific word lists to be installed.<br><br>


title: DESCRIPTION
content:
<b>xkcdpass</b> generates strong passphrases composed of multiple random words, directly inspired by the popular xkcd comic #936 "Password Strength".<br><br>The core idea is to create passwords that are both difficult for computers to guess due to their length and high entropy, and relatively easy for humans to remember due to their use of common, pronounceable words. It offers extensive customization options, allowing users to control the number of words, the word list source, separators between words, and the inclusion of capitalization, digits, or symbols to enhance security while maintaining memorability.


title: CAVEATS
content:
The security of passphrases generated by <b>xkcdpass</b> heavily depends on the quality, size, and randomness of the word list used. Default system word lists may contain common words, which could reduce entropy. Using the <b>--prune</b> option or a custom, large, and diverse word list is recommended for maximum security. The <b>--prune</b> option also requires specific database libraries (<i>gdbm</i> or <i>db</i>) to be installed.


title: DEFAULT BEHAVIOR
content:
By default, <b>xkcdpass</b> generates a single passphrase consisting of four random words, separated by spaces, chosen from the system's default word list (e.g., <i>/usr/share/dict/words</i>). No capitalization, digits, or symbols are added by default, prioritizing pure word-based memorability.


title: SECURITY PRINCIPLE
content:
The command adheres to the principle that length is paramount for password strength. Rather than relying on a mix of uppercase letters, numbers, and symbols in a short string (which is often hard to remember), <b>xkcdpass</b> focuses on combining multiple common words. This approach significantly increases the entropy and thus the time required for a brute-force attack, while making the passphrase far more memorable for the user.


title: HISTORY
content:
<b>xkcdpass</b> was created by 'redacted' and first committed to GitHub in 2011. Its primary inspiration is the popular webcomic xkcd #936 "Password Strength" (published August 14, 2009), which famously illustrated that a long, multi-word passphrase can be far more secure and memorable than a complex, short string of random characters. The tool was developed to provide a practical implementation of this concept, focusing on generating passphrases that are robust against brute-force attacks while remaining easy for humans to recall.


title: PARAMETERS
content:
<b>-id <I>resource</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X resource ID (e.g., window ID) of the client to kill directly, bypassing the interactive click mode. This allows for non-interactive termination, useful for scripting.<br><br><b>-frame</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When clicking, targets the window manager's frame around the application window, rather than just the application's client window itself. This can be useful for applications that are difficult to target directly because their visible area is primarily handled by the window manager.<br><br>


title: DESCRIPTION
content:
The <b>xkill</b> command is an X Window System utility designed to forcefully terminate misbehaving or unresponsive graphical applications (X clients). When executed without arguments, <b>xkill</b> changes the mouse cursor, typically to a skull and crossbones or a similar distinctive icon. The user then clicks on the window of the application they wish to terminate.<br><br>Upon clicking, <b>xkill</b> sends a "KillClient" request to the X server, which in turn closes the connection of the selected application to the X server, effectively shutting it down. This method is a last resort as it does not allow the application to save its state or perform a graceful shutdown. It's particularly useful when an application freezes and cannot be closed through normal means. It only works on X applications, not on console processes or services.


title: CAVEATS
content:
Using <b>xkill</b> is a destructive action; unsaved work in the targeted application will be lost. Be cautious when the cursor changes, as clicking the wrong window can terminate critical components of your desktop environment (e.g., your panel, file manager, or even the entire desktop shell). It terminates the X client's connection, which may not always kill the underlying process cleanly, potentially leaving a zombie process or other orphaned resources. It's a tool of last resort and should be used carefully.


title: INTERACTIVE VS. NON-INTERACTIVE USE
content:
By default, <b>xkill</b> operates in an interactive mode where the cursor changes, prompting the user to click on the target window. The <i>-id</i> option allows for non-interactive use, where a specific X resource ID is provided as an argument, making it suitable for scripting or automated tasks.


title: CANCELLING XKILL
content:
If you launch <b>xkill</b> and decide not to terminate any application, you can usually cancel the operation by pressing the <i>Escape</i> key, or by clicking a mouse button other than the primary (left) button (e.g., right-click or middle-click).


title: HISTORY
content:
<b>xkill</b> has been a fundamental part of the X Window System utilities since its early days (X11R1 in 1987). Its simple yet effective mechanism for terminating unresponsive X clients made it an indispensable tool for users and administrators alike. Its core functionality has remained largely unchanged, reflecting the enduring design principles of the X server's client management.


title: PARAMETERS
content:
<b><b>-display</b> <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to.<br><br><b><b>-geometry</b> <I>geometry</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the initial size and location of the <b>xload</b> window.<br><br><b><b>-update</b> <I>seconds</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the interval in seconds between updates of the load average graph. The default is 5 seconds.<br><br><b><b>-scale</b> <I>integer</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the vertical scale of the graph in pixels per load average point. For example, a value of 1 would mean 1 pixel per load average point. The default is typically 8.<br><br><b><b>-label</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a string to display as a label above the load average graph. Useful for identifying specific machines or monitoring instances.<br><br><b><b>-nolabel</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the display of the label string above the graph.<br><br><b><b>-hl</b> <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color of the highlight line, which represents the current load average. Defaults to the foreground color.<br><br><b><b>-jumpscroll</b> <I>pixels</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies how many pixels the graph should scroll horizontally when updated. A value of 0 means the graph redraws from the right; a positive value scrolls existing data.<br><br><b><b>-rv</b> / <b>+rv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>-rv</b> (reverse video) swaps the foreground and background colors. <b>+rv</b> restores normal video (default).<br><br><b><b>-bg</b> <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the <b>xload</b> window.<br><br><b><b>-fg</b> <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground color, used for text, borders, and the graph itself unless overridden by <b>-hl</b>.<br><br><b><b>-bd</b> <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color of the window border.<br><br><b><b>-bw</b> <I>pixels</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the width of the window border in pixels.<br><br><b><b>-fn</b> <I>font</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to be used for displaying the label string.<br><br>


title: DESCRIPTION
content:
The <b>xload</b> command is a venerable utility for the X Window System, providing a real-time, graphical representation of the system's load average. It continuously samples and plots the load average, which indicates the number of processes that are either running or waiting to run on the system. This visual feedback helps users quickly assess the system's activity level. While simple compared to modern monitoring tools, <b>xload</b> is invaluable for quickly glancing at system performance without needing to switch to a terminal or launch more complex applications. Its appearance and behavior can be extensively customized through command-line options or X resources, allowing users to define colors, update intervals, scaling, and window geometry to suit their preferences and integrate seamlessly into their desktop environment.


title: CAVEATS
content:
<b>xload</b> is specifically designed for the X Window System; it cannot be run in a text-only terminal environment. While useful for quick visual checks, it offers limited detail compared to dedicated system monitoring tools like <b>top</b> or <b>htop</b>. The load average value itself can be misleading if the number of CPU cores is not considered; a load of '2.0' on a single-core system is very high, but on an 8-core system, it indicates minimal load per core.


title: X RESOURCES
content:
Like many X applications, <b>xload</b> supports extensive customization via X resources. Options can be set in the X resource database (e.g., in `~/.Xresources` or `~/.Xdefaults`) using the syntax `XLoad*<resource_name>: <value>`. For example, to set the update interval, you could use `XLoad*update: 2`. This provides a persistent way to configure <b>xload</b>'s appearance and behavior across sessions without needing to specify command-line options every time.


title: INTERPRETING LOAD AVERAGE
content:
The load average displayed by <b>xload</b> represents the average number of processes in the run queue (running or waiting for CPU) over specific periods (typically 1, 5, and 15 minutes, though <b>xload</b> usually displays a smoothed version of the 1-minute average). A load average of 1.0 on a single-core system indicates the CPU is fully utilized. On a multi-core system, a load average approximately equal to the number of CPU cores indicates full utilization without processes waiting excessively. For example, a load of 4.0 on a quad-core system means all cores are busy. Values significantly higher than the number of cores suggest a bottleneck where processes are queuing up.


title: HISTORY
content:
<b>xload</b> is one of the earliest graphical utilities developed for the X Window System, originating from the MIT X Consortium. It has been a standard component of X Window System distributions since its inception, providing a simple yet effective way to monitor system load visually. Due to its focused and stable functionality, <b>xload</b> has undergone relatively few fundamental changes over its long history, remaining a reliable, low-resource tool for basic performance monitoring in X environments.


title: PARAMETERS
content:
<b>-display <i>host:display.screen</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to.<br><br><b>-geometry <i>widthxheight+xoff+yoff</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the initial size and position of the window.<br><br><b>-bg <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the window.<br><br><b>-fg <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground color, which is the color of the X logo itself.<br><br><b>-bordercolor <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the color of the window border.<br><br><b>-borderwidth <i>pixels</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the width of the window border in pixels.<br><br><b>-title <i>string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the window title string.<br><br><b>-name <i>string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the application name for resource lookups.<br><br><b>-xrm <i>resource_string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a resource string to be used by the application.<br><br>


title: DESCRIPTION
content:
The <i>xlogo</i> command is a fundamental X Window System client designed to simply display the iconic X logo. It serves primarily as a lightweight visual test for verifying the operational status and connectivity of an X server. Often used in debugging X installations or demonstrations, it confirms that an X display is accessible and rendering correctly. As a basic X client, it supports standard X Toolkit options for controlling its appearance and position on the screen, such as background and foreground colors, window geometry, and title. Despite its simplicity, <i>xlogo</i> is a classic utility, consuming minimal resources while providing immediate visual feedback of a functional X environment.


title: CAVEATS
content:
<i>xlogo</i> is a purely graphical display application; it provides no interactive functionality beyond closing its window. Its sole purpose is to display the logo and confirm basic X server operation.


title: USAGE AS A TEST TOOL
content:
Because of its minimal resource usage and simple display function, <i>xlogo</i> is frequently used by system administrators and developers for a quick visual test to ensure that an X server is running correctly and that network connectivity to it is established. It's often the first graphical application run to confirm a working X environment.


title: HISTORY
content:
<i>xlogo</i> has been a fundamental part of the standard X Window System distribution since its early days (X11R1, 1987). It was created as a simple, illustrative client to demonstrate basic X server functionality and has remained a classic utility for testing and visual confirmation of X environment integrity.


title: PARAMETERS
content:
<b><I>-display</I> <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;This option specifies the X server to connect to. The <I>display</I> argument typically takes the form of <I>hostname:displaynumber.screennumber</I>. If not specified, <I>xlsatoms</I> uses the value of the <I>DISPLAY</I> environment variable.<br><br>


title: DESCRIPTION
content:
<I>xlsatoms</I> is a utility for the X Window System that queries an X server and displays a list of all interned atom names and their corresponding integer values. Atoms are unique integer identifiers that the X server uses to represent strings, especially for property names, types, and selection names. This mechanism helps in efficient communication by allowing clients to refer to common strings by their integer IDs rather than transmitting the full string repeatedly.<br><br>The command provides a snapshot of these definitions, showing both the human-readable string and its unique numeric ID. It is particularly useful for debugging X applications, understanding the various properties active on an X server, and for developers working with the X protocol who need to inspect the server's internal state regarding these fundamental identifiers.


title: CAVEATS
content:
This command requires a running X server to function properly. The output can be very long depending on the number of interned atoms on the server, which can vary greatly based on running applications and server activity. It is primarily a diagnostic and developer tool and is not typically used for general end-user interaction.


title: ATOMS IN X WINDOW SYSTEM
content:
Atoms are a crucial concept in the X Window System protocol. They are unique integer IDs corresponding to strings. When a string (like a property name, type, or selection name) is first used, it is 'interned' by the X server, which assigns it a unique atom ID. Subsequent references to that string then use its atom ID, avoiding the need to transmit the full string data over the network repeatedly. This mechanism helps to optimize network traffic, improve performance, and ensures consistency in named resources across different clients and the server.


title: HISTORY
content:
<I>xlsatoms</I> is a long-standing utility within the X Window System, originating from early versions of X. It is part of the <B>xorg-x11-utils</B> or similar X.Org utility packages, reflecting its fundamental role in inspecting the server's internal state regarding atom management. Its simple yet powerful function has remained consistent throughout the development of X.


title: PARAMETERS
content:
<b><b>-display</b> <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to. If not specified, the value of the DISPLAY environment variable is used.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays output in a long format. This includes the window name, icon name, and the hostname where the client is running.<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all clients, including those usually hidden, such as internal server clients or clients that don't own any top-level windows.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes clients even if their top-level window is currently unmapped. By default, <i>xlsclients</i> only shows clients whose top-level windows are mapped.<br><br><b><b>-m</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows information specifically about the window manager client. This is useful for identifying the active window manager.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>xlsclients</i> version number to standard output and then exits.<br><br>


title: DESCRIPTION
content:
<i>xlsclients</i> is a command-line utility used to list applications connected to an X Window System display. It queries the X server to identify active clients, providing information about each one, such as its resource ID and, when available, its window name and hostname. <br><br>This tool is particularly useful for system administrators and developers to diagnose issues, understand which applications are consuming display resources, or verify if specific X clients are running as expected. It can display information in a concise format or provide more detailed output depending on the options used. <i>xlsclients</i> helps in gaining insight into the dynamic state of an X server's client connections.


title: CAVEATS
content:
<i>xlsclients</i> relies on the X server to provide client information, which may be limited or vary in detail depending on the X server implementation and version. It primarily lists connections to the X server rather than all processes on the system that might interact with X. It does not provide performance metrics like CPU or memory usage; other system monitoring tools are required for such details.


title: HISTORY
content:
<i>xlsclients</i> is a fundamental utility within the X Window System's core distribution. It has been a part of the standard <i>x11-utils</i> or <i>xorg-x11-apps</i> packages for many years, maintaining its essential purpose of listing X clients without significant changes to its core functionality or options over time, reflecting its stable and specialized role in X system administration.


title: SYNOPSIS
content:
<b>xlsfonts</b> [-display <i>display</i>] [-fn <i>pattern</i>] [-l|-ll|-lll] [-1|-C|-n <i>columns</i>] [-u] [-w <i>width</i>]


title: PARAMETERS
content:
<b><b>-display</b> <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to contact. This allows querying fonts from a remote or specific X display.<br><br><b><b>-fn</b> <i>pattern</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a font name pattern (using X Logical Font Description wildcards) to match. Only fonts matching this pattern will be listed.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a long listing of fonts, including their properties. This is useful for seeing detailed attributes of each font.<br><br><b><b>-ll</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a very long listing, showing more properties than <b>-l</b>.<br><br><b><b>-lll</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides an extremely long listing, showing all available properties for each font.<br><br><b><b>-1</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs one font name per line, disabling column formatting.<br><br><b><b>-C</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs font names in columns, which is often the default behavior when space allows.<br><br><b><b>-n</b> <i>columns</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of columns to use when outputting font names.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents sorting of the font names; they are listed in the order received from the X server.<br><br><b><b>-w</b> <i>width</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the width in characters for column output. It works in conjunction with <b>-C</b> or default column output.<br><br>


title: DESCRIPTION
content:
<i>xlsfonts</i> is a command-line utility for the X Window System that lists the fonts known to the X server. When invoked, it queries the X server and displays the names of all available fonts, or those matching a specified pattern. Font names are typically presented in the X Logical Font Description (XLFD) format, which provides a comprehensive way to describe font properties like foundry, family, weight, slant, size, and encoding. This tool is invaluable for users and administrators to identify which fonts are accessible to X applications, verify font server configurations, or troubleshoot font-related display issues. It helps in understanding the exact font names needed for resources or commands that require explicit font specifications.


title: CAVEATS
content:
<i>xlsfonts</i> lists fonts known and served by the X server, which might not be all fonts physically present on your system. The X server's font path (configured via <i>xset fp</i>) determines which directories it scans for font files. If a font is installed but not in the server's font path, <i>xlsfonts</i> will not list it. Font names are represented as X Logical Font Description (XLFD) strings, which can be complex and require familiarity to interpret fully.


title: UNDERSTANDING XLFD STRINGS
content:
<i>xlsfonts</i> outputs font names using the X Logical Font Description (XLFD) format. An XLFD string is a precise, 14-field identifier for a font, such as:<br><i>-foundry-family-weight-slant-setwidth-addstyle-pixelsize-pointsize-resX-resY-spacing-avgwidth-charsetregistry-charsetencoding</i>.<br>Wildcards (<i>*</i> and <i>?</i>) can be used with the <b>-fn</b> option to match parts of these fields, making it powerful for filtering specific font types (e.g., <i>-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*</i> for 12-point bold Helvetica fonts).


title: FONT PATHS AND SERVER CONFIGURATION
content:
The fonts listed by <i>xlsfonts</i> are those accessible via the X server's font path. This path specifies directories where the X server looks for font files. You can inspect the current font path using <b>xset q</b> and modify it using <b>xset fp+</b> (add directory), <b>xset fp-</b> (remove directory), or <b>xset fp=</b> (set new path). For changes to take effect, <b>xset fp rehash</b> is often required. Ensuring fonts are in the server's path is crucial for them to be used by X applications.


title: HISTORY
content:
<i>xlsfonts</i> has been a fundamental utility within the X Window System since its early days, dating back to the X11R1 release. It was developed as part of the core X distribution to provide a simple yet effective way for users and developers to inspect the fonts available on an X display. Its design and core functionality have remained remarkably consistent over decades, reflecting the stable nature of the X fonting mechanism. It continues to be a staple tool for managing and troubleshooting font environments in X.


title: SYNOPSIS
content:
<b>xmag</b> [ <i>-display <I>host:display</I></i> ] [ <i>-geometry <I>geom</I></i> ] [ <i>-source <I>geom</I></i> ] [ <i>-mag <I>factor</I></i> ] [ <i>-fn <I>font</I></i> ] [ <i>-bd <I>color</I></i> ] [ <i>-bw <I>pixels</I></i> ] [ <i>-fg <I>color</I></i> ] [ <i>-bg <I>color</I></i> ] [ <i>-name <I>name</I></i> ] [ <i>-title <I>title</I></i> ] [ <i>-rv</i> ] [ <i>-xrm <I>resource_string</I></i> ] [ <i>-version</i> ]


title: PARAMETERS
content:
<b><i>-display <I>host:display</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to, overriding the <i>DISPLAY</i> environment variable.<br><br><b><i>-geometry <I>geom</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the preferred size and position of the magnifier window. This is the window that displays the magnified view.<br><br><b><i>-source <I>geom</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the geometry of the source region to be magnified. This allows predefining the area without interactive selection, using a standard X geometry string (e.g., <i>100x100+50+50</i>).<br><br><b><i>-mag <I>factor</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the magnification factor. The default value is 5. For example, <i>-mag 2</i> will show pixels twice their original size.<br><br><b><i>-fn <I>fontname</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to be used for displaying coordinate information within the magnifier window.<br><br><b><i>-bd <I>color</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the border color of the magnifier window.<br><br><b><i>-bw <I>pixels</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the border width of the magnifier window in pixels.<br><br><b><i>-fg <I>color</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground color, primarily used for text (e.g., coordinates) within the magnifier window.<br><br><b><i>-bg <I>color</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the magnifier window.<br><br><b><i>-name <I>name</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the application name, which can be used by window managers or for X resource lookups.<br><br><b><i>-title <I>title</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the title of the magnifier window, which appears in the window manager's title bar.<br><br><b><i>-rv</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverses the foreground and background colors of the magnifier window.<br><br><b><i>-xrm <I>resource_string</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows setting arbitrary X resources directly on the command line. For example, <i>xmag -xrm 'xmag.magnification: 10'</i>.<br><br><b><i>-version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of the <b>xmag</b> utility to standard output and exits.<br><br>


title: DESCRIPTION
content:
<b>xmag</b> is a utility for the X Window System that provides a magnified view of a selected area of the screen.<br><br>When launched, the cursor typically changes to a crosshair. The user can then click and drag to define a rectangular region on the screen. Upon releasing the mouse button, <b>xmag</b> opens a new window displaying a magnified version of the content within the selected rectangle. This tool is particularly useful for examining fine details, verifying pixel-level accuracy, or assisting users with visual impairments by enlarging small text or graphics.<br><br>The magnification factor can be adjusted, offering flexibility in how much an area is enlarged. It's a simple yet effective tool for visual inspection in a graphical environment, primarily interacting directly with the X server.


title: CAVEATS
content:
<b>xmag</b> is a relatively old utility and relies directly on the X Window System. It may not integrate seamlessly or function correctly in modern display servers like Wayland, or in desktop environments that heavily rely on compositors that interfere with direct screen pixel access.<br><br>Performance can vary depending on system resources and the size of the magnified area; very large areas or high magnification factors might introduce noticeable lag. The magnified view is a snapshot that updates, but not necessarily in real-time, which can lead to tearing or slight delays with rapidly changing screen content.


title: USAGE INTERACTION
content:
When <b>xmag</b> starts without a <i>-source</i> option, the cursor typically changes to a crosshair. The user then clicks and drags a rectangle on the screen to define the area of interest. Releasing the mouse button opens a new window showing the magnified content of the selected area. To re-select an area, simply repeat the click-and-drag action. The magnifier window can be resized, but this only changes the window's display area, not the magnification factor itself, which is controlled by the <i>-mag</i> option or X resources.


title: X RESOURCES
content:
<b>xmag</b> supports X resources for persistent configuration. Users can set default values for its options (e.g., magnification factor: <i>xmag.magnification</i>, border color: <i>xmag.borderColor</i>, font: <i>xmag.font</i>) in their X resource files (e.g., <i>~/.Xresources</i> or <i>~/.Xdefaults</i>). These settings will then apply automatically when <b>xmag</b> is launched without explicit command-line options, providing a convenient way to customize its default behavior.


title: MODERN ALTERNATIVES
content:
For users on modern desktop environments like GNOME or KDE, more integrated and feature-rich screen magnifiers are often available. Examples include <i>GNOME Magnifier</i> (part of the Orca accessibility suite) or <i>KMagnifier</i>. These tools typically offer smoother scrolling, dynamic magnification, and better integration with accessibility features and Wayland-based systems, addressing limitations inherent in older X-specific utilities like <b>xmag</b>.


title: HISTORY
content:
<b>xmag</b> has been a staple tool within the X Window System environment since its early development. It is part of the <i>x11-apps</i> or <i>xorg-apps</i> package, which bundles many standard X utilities designed to provide basic functionalities. Its design philosophy aligns with the Unix tradition of simple, effective tools that 'do one thing and do it well.' While more sophisticated screen magnifiers exist today within modern desktop environments (e.g., GNOME Magnifier, KMagnifier), <b>xmag</b> remains available for its simplicity and direct interaction with the X server, making it useful in minimal X installations or for developers needing to debug display issues at a pixel level.


title: SYNOPSIS
content:
<i><b><code>xmake</code></b> [<i>options</i>] [<i>command</i>] [<i>arguments...</i>]</i><br><br><i>Common commands include:</i><br><i><b><code>xmake config</code></b> [<i>--plat=&lt;platform&gt;</i>] [<i>--arch=&lt;architecture&gt;</i>] [<i>--mode=&lt;mode&gt;</i>]</i><br><i><b><code>xmake build</code></b> [<i>-j&lt;jobs&gt;</i>] [<i>target</i>]</i><br><i><b><code>xmake run</code></b> [<i>target</i>] [<i>--args=&lt;arguments&gt;</i>]</i><br><i><b><code>xmake install</code></b> [<i>target</i>]</i><br><i><b><code>xmake clean</code></b> [<i>--all</i>]</i><br><i><b><code>xmake update</code></b> [<i>--self</i>]</i>


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for xmake or a specific command.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details during the build process.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the xmake version information.<br><br><b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures the project build environment. Used to set platform, architecture, build mode (debug/release), toolchain, and other global build settings.<br><br><b>build</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and links the project. Can specify a particular target to build or build all targets.<br><br><b>run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a specified target (e.g., an executable) after building. Additional arguments can be passed to the target program.<br><br><b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs the built targets to a specified or default installation directory.<br><br><b>clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes intermediate build files and outputs. Use '--all' to remove cached packages and configuration.<br><br><b>package</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Packages the built targets, often creating archives or distribution packages.<br><br><b>project</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates project files for various IDEs (e.g., Visual Studio, Xcode, Makefiles, CMakeLists).<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates xmake itself or its built-in package repository. Use '--self' to update xmake.<br><br><b>create</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new xmake project from a template.<br><br><b>test</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes project tests defined in the xmake.lua file.<br><br>


title: DESCRIPTION
content:
<i><br>xmake is a lightweight, cross-platform build utility that aims to provide a simple and powerful solution for building projects. Unlike traditional build systems like Make or CMake, xmake uses a Lua-based syntax for its project configuration files (<code>xmake.lua</code>), making it highly flexible and easy to read and write. It simplifies the build process by integrating various features typically found in separate tools, such as dependency management, package management, cross-compilation support, and project generation for various IDEs.<br><br>It supports a wide range of platforms, including Windows, macOS, Linux, Android, iOS, and WebAssembly, and works with numerous compilers like GCC, Clang, MSVC, and MinGW. xmake's built-in package manager allows seamless integration and automatic downloading of third-party libraries, reducing the complexity of managing external dependencies. Its design emphasizes ease of use, high performance through parallel compilation, and extensibility via plugins and custom rules, making it suitable for projects of all sizes.</i>


title: CAVEATS
content:
<i>While xmake simplifies many aspects of project building, its custom Lua-based configuration syntax (<code>xmake.lua</code>) requires some learning, especially for advanced build rules or custom scenarios. Although it's cross-platform, subtle differences in toolchains or system configurations can sometimes lead to platform-specific issues that require detailed debugging. Its community and ecosystem, while growing, are still smaller compared to more established build systems like Make or CMake.</i>


title: XMAKE.LUA CONFIGURATION
content:
<i>The core of an xmake project is the <code>xmake.lua</code> file. This Lua script defines project targets (executables, libraries), source files, dependencies, build rules, and configurations. Its declarative syntax makes it easy to read and maintain, allowing developers to quickly understand and modify build logic.</i>


title: INTEGRATED PACKAGE MANAGEMENT
content:
<i>xmake includes a powerful built-in package manager that can automatically fetch, compile, and link third-party dependencies from various sources (e.g., Conan, Vcpkg, Homebrew, or xmake's own repository). This significantly simplifies dependency management across different platforms and environments.</i>


title: CROSS-COMPILATION AND TOOLCHAINS
content:
<i>xmake provides robust support for cross-compilation. Users can easily specify target platforms and architectures, and xmake will automatically manage the necessary toolchains and SDKs. This is particularly useful for embedded systems, mobile development (Android/iOS), and WebAssembly.</i>


title: HISTORY
content:
<i>xmake was first released around 2017 by Ruki and has been under continuous development since. It emerged as a response to the perceived complexities of existing build systems, aiming to offer a more intuitive and integrated experience. Its design emphasizes a modern approach to build automation, combining features like package management and IDE project generation directly into the core tool, which were often handled by separate utilities in older systems. It quickly gained popularity among developers looking for a simpler yet powerful alternative, especially in cross-platform development contexts.</i>


title: PARAMETERS
content:
<b><b>-geometry</b> <i>&lt;geometry&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the initial size and position of the <b>xman</b> window.<br><br><b><b>-display</b> <i>&lt;display&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server display to connect to.<br><br><b><b>-bw</b> <i>&lt;width&gt;</i> or <b>-borderwidth</b> <i>&lt;width&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the width in pixels of the border around the main window.<br><br><b><b>-bd</b> <i>&lt;color&gt;</i> or <b>-bordercolor</b> <i>&lt;color&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color of the border around the main window.<br><br><b><b>-fg</b> <i>&lt;color&gt;</i> or <b>-foreground</b> <i>&lt;color&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the foreground color for the application.<br><br><b><b>-bg</b> <i>&lt;color&gt;</i> or <b>-background</b> <i>&lt;color&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the background color for the application.<br><br><b><b>-fn</b> <i>&lt;font&gt;</i> or <b>-font</b> <i>&lt;font&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to be used in the window.<br><br><b><b>-name</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the application name used for resource lookups.<br><br><b><b>-class</b> <i>&lt;class&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the application class name used for resource lookups.<br><br><b><b>-rc</b> <i>&lt;file&gt;</i> or <b>-xrm</b> <i>&lt;resource_string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an X resource file or a resource string to override defaults.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief summary of command-line options.<br><br><b><i>[section]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional manual section number (e.g., <i>1</i>, <i>3</i>). If specified with <i>page</i>, <b>xman</b> attempts to display that specific page.<br><br><b><i>[page]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional manual page name (e.g., <i>ls</i>, <i>printf</i>). If specified, <b>xman</b> attempts to display this page.<br><br>


title: DESCRIPTION
content:
The <b>xman</b> command is an X Window System client designed to provide a graphical interface for browsing and displaying UNIX manual pages. It offers a more interactive and visually intuitive way to access documentation compared to the traditional command-line <b>man</b> utility. Users can navigate through different manual sections, perform keyword searches similar to <b>apropos</b>, and view specific man pages within a dedicated window.<br><br>Key features include a directory browser that lists available man pages by section, a search function for finding pages based on keywords in their names or descriptions, and the ability to directly open a specified page. While functional and still part of the X.Org distribution, <b>xman</b>'s usage has diminished over time due to the rise of modern desktop environments with integrated help systems and the prevalence of web-based documentation.


title: CAVEATS
content:
<b>xman</b> is built on older X toolkits (Athena, Motif) and may not integrate seamlessly or look consistent with modern desktop environments like GNOME or KDE. It relies on the underlying <b>man</b> system for its content, meaning any misconfiguration of your <b>MANPATH</b> or issues with <b>man</b> itself will affect <b>xman</b>. Its functionality has largely been superseded by more modern documentation viewing methods, including integrated help systems, web browsers, and terminal emulators with better scrollback and search capabilities. It is often not included in default installations of contemporary Linux distributions.


title: RESOURCES
content:
<b>xman</b> is highly configurable through X resources. These resources, which control appearance and behavior, can be set in files like <i>.Xdefaults</i> or <i>.Xresources</i>, or via the <b>xrdb</b> utility. Examples of important resources include: <br><i>xman*commandLine</i>: Specifies a manual page to display on startup.<br><i>xman*directoryMask</i>: Filters which directories are scanned for man pages.<br><i>xman*manpath</i>: Defines an alternative search path for manual pages, overriding the <b>MANPATH</b> environment variable. Understanding these resources is crucial for advanced customization of <b>xman</b>.


title: HISTORY
content:
<b>xman</b> was developed as a core component of the X Window System, making its debut with the X11R1 release in 1987. Its purpose was to provide a native graphical interface for accessing UNIX manual pages within the then-new X graphical environment. It aimed to make documentation more accessible and interactive than the command-line <b>man</b> utility. Over the years, <b>xman</b> evolved with various X toolkit versions (Athena, Motif). However, its usage gradually declined starting in the late 1990s and early 2000s, as modern desktop environments introduced their own help browsers and the internet became the primary source for documentation, leading to its current status as a legacy application, though still maintained as part of the X.Org project.


title: PARAMETERS
content:
<b><b>-buttons</b> <i>string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated list of button labels to be displayed at the bottom of the message window. The first button is typically the default.<br><br><b><b>-default</b> <i>label</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the specified button <i>label</i> as the default. Pressing Enter will activate this button.<br><br><b><b>-file</b> <i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the message text from the specified <i>filename</i> instead of command-line arguments.<br><br><b><b>-font</b> <i>fontname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to use for the message text. Defaults to a standard X font.<br><br><b><b>-geometry</b> <i>geometry</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial size and position of the message window using standard X geometry specifications (e.g., <i>80x25+100+100</i>).<br><br><b><b>-timeout</b> <i>seconds</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically dismisses the message window after the specified number of <i>seconds</i>. Returns a non-zero exit status if timed out.<br><br><b><b>-print</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the label of the button clicked by the user to standard output. If no button is clicked (e.g., timeout), nothing is printed.<br><br><b><b>-center</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Centers the message window on the screen.<br><br><b><b>-nearmouse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the message window near the current mouse pointer location.<br><br><b><b>-left</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the message window at the far left edge of the screen.<br><br><b><b>-right</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the message window at the far right edge of the screen.<br><br><b><b>-top</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the message window at the top edge of the screen.<br><br><b><b>-bottom</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the message window at the bottom edge of the screen.<br><br><b><b>-title</b> <i>title</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the window manager title for the message window.<br><br><b><b>-wrap</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables word wrapping for long lines of text. This is often the default behavior.<br><br><b><b>-nolinebreaks</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores newline characters in the input text, treating them as spaces. Use with <b>-wrap</b> to create a single wrapped paragraph.<br><br><b><b>-bg</b> <i>color</i> / <b>-background</b> <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the message window.<br><br><b><b>-fg</b> <i>color</i> / <b>-foreground</b> <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground (text) color of the message.<br><br><b><b>-display</b> <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display server to connect to.<br><br><b><b>-name</b> <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the application name for resource matching, which can influence its appearance or behavior via X resources.<br><br>


title: DESCRIPTION
content:
<i>xmessage</i> is a fundamental utility within the X Window System, designed for displaying simple textual messages in a dedicated graphical window. It serves as a straightforward way for shell scripts or command-line applications to interact with the user via a basic graphical interface without requiring complex GUI toolkit dependencies.<br><br>Users can dismiss the message by clicking one of the optional buttons or by the window manager's close function. While lacking the advanced features and polished appearance of modern dialog tools like Zenity or kdialog, <i>xmessage</i> remains valuable for its minimal footprint, ease of use, and ubiquitous availability on X-based systems, making it ideal for quick notifications, confirmations, or displaying errors.


title: CAVEATS
content:
<i>xmessage</i> is a very basic X utility. It lacks advanced features like rich text formatting (beyond simple font support), complex layouts, input fields, or progress bars. Its appearance is entirely dependent on the X server's default rendering and cannot be easily themed like modern GUI applications.<br><br>It also requires an X server to be running and accessible, making it unsuitable for purely console-based environments or headless servers.


title: EXIT STATUS
content:
<i>xmessage</i> typically returns an exit status of <b>0</b> if the user clicked one of the specified buttons. If the window was dismissed by the window manager's close button, or if a timeout occurred (via <b>-timeout</b>), it usually returns a non-zero status.<br><br>When the <b>-print</b> option is used, the label of the clicked button is also printed to standard output before exiting.


title: HISTORY
content:
<i>xmessage</i> has been a part of the core X Window System distribution since its early versions, tracing its origins back to the MIT X Consortium. It was designed to provide a simple, ubiquitous method for graphical output from scripts and applications without relying on specific widget sets or extensive libraries. Its continued presence in X.Org Server distributions highlights its enduring utility for straightforward, low-dependency graphical notifications, even as more sophisticated desktop environments have emerged.


title: SYNOPSIS
content:
<b>xml</b> [<i>OPTIONS</i>] [<i>FILE...</i>]<br><br>This conceptual command would operate on one or more XML files provided as arguments, or read XML data from standard input if no files are specified. The specific operation (e.g., validation, formatting, transformation) would be determined by the chosen options.


title: PARAMETERS
content:
<b><b>-v</b>, <b>--validate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates the XML document against its internal DTD or a specified schema/DTD.<br><br><b><b>-s</b> <i>&lt;schema_file&gt;</i>, <b>--schema</b> <i>&lt;schema_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an XML Schema Definition (XSD) file for validation.<br><br><b><b>-d</b> <i>&lt;dtd_file&gt;</i>, <b>--dtd</b> <i>&lt;dtd_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an external Document Type Definition (DTD) file for validation.<br><br><b><b>-p</b>, <b>--pretty</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the XML document in a human-readable, indented format.<br><br><b><b>-t</b> <i>&lt;xsl_file&gt;</i>, <b>--transform</b> <i>&lt;xsl_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies an XSLT stylesheet to the XML document, transforming its content.<br><br><b><b>-x</b> <i>&lt;xpath_expr&gt;</i>, <b>--xpath</b> <i>&lt;xpath_expr&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Evaluates an XPath expression against the XML document and prints the result.<br><br><b><b>-w</b>, <b>--well-formed</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks only for XML well-formedness, without performing full validation.<br><br><b><b>-o</b> <i>&lt;output_file&gt;</i>, <b>--output</b> <i>&lt;output_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the processed XML output to the specified file instead of standard output.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message detailing command usage and options, then exits.<br><br>


title: DESCRIPTION
content:
The <b>xml</b> command, while not a standard standalone utility in most Linux distributions, represents a conceptual, versatile command-line tool designed for comprehensive XML processing. It consolidates functionalities typically spread across various specialized tools like <i>xmllint</i>, <i>xmlstarlet</i>, and <i>xsltproc</i>. A hypothetical <b>xml</b> command would provide capabilities for validating XML documents against DTDs or XML Schemas, pretty-printing XML for enhanced readability, applying XSLT transformations, and querying XML data using XPath expressions. Its purpose would be to streamline interaction with XML directly from the terminal, making it invaluable for developers, system administrators, and anyone automating tasks involving XML files. Such a tool would handle common parsing errors, provide informative diagnostics, and support various input/output options, aiming to simplify complex XML operations within shell scripts and command-line workflows.


title: CAVEATS
content:
The 'xml' command is <i>not</i> a standard, pre-installed utility found in most Linux distributions. The description provided here is conceptual, outlining functionalities that a unified XML command-line tool <i>would</i> offer, based on common capabilities of existing specialized tools. Users typically rely on specific packages like <i>libxml2-utils</i> (providing <i>xmllint</i>) or <i>xmlstarlet</i> for actual XML processing tasks on Linux.


title: ERROR HANDLING AND DIAGNOSTICS
content:
A well-designed <b>xml</b> command would offer comprehensive error handling, providing clear and concise diagnostic messages for XML documents that are either malformed or fail validation. These messages would typically include specific line and column numbers, along with a description of the error (e.g., unexpected end tag, undeclared entity, schema validation failure). This level of detail is crucial for efficient debugging and ensuring the integrity of XML data processed via the command line.


title: HISTORY
content:
Since the 'xml' command is conceptual and not a standard utility, it does not have a conventional development history. However, its theoretical inception stems from the widespread adoption of XML across various computing domains since the late 1990s. This prevalence led to the development of numerous specialized tools for XML parsing, validation, transformation, and querying (e.g., <i>libxml2</i>, <i>Apache Xerces</i>, <i>Saxon</i>). A unified 'xml' command would conceptually represent a consolidation effort, aiming to provide a single, user-friendly interface to these diverse functionalities, driven by the need for more efficient command-line XML manipulation in scripting and automation environments.


title: SEE ALSO
content:
<i>xmllint(1)</i>: A command-line tool for parsing, validating, and pretty-printing XML documents, part of the libxml2 library., <i>xmlstarlet(1)</i>: A versatile command-line toolkit for XML transformation, validation, formatting, and querying using XPath., <i>xsltproc(1)</i>: A command-line XSLT processor, typically used for applying XSLT stylesheets to XML documents., <i>grep(1)</i>: General-purpose pattern matching tool, occasionally used for simple text searches within XML files., <i>sed(1)</i>: Stream editor, can perform basic text manipulations on XML files, though not XML-aware.


title: SYNOPSIS
content:
<b>xml-c14n</b> [<i>OPTIONS</i>] [<i>FILE</i>]<br>Reads XML from FILE or standard input, outputs canonicalized XML.


title: PARAMETERS
content:
<b>-o, --output file</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file for the canonicalized XML. If not specified, output goes to standard output.<br><br><b>-i, --in-place</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs canonicalization on the input file directly, overwriting its content. Use with caution.<br><br><b>-e, --exc-c14n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses Exclusive XML Canonicalization 1.0, which handles namespaces differently for portability.<br><br><b>-C, --with-comments</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes comments in the canonicalized output. Note: standard C14N removes comments.<br><br><b>-I, --id id</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ID of the root element to be canonicalized. Only that element and its descendants are processed.<br><br><b>-P, --prefix-ns</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with exclusive canonicalization, prefixes namespace attributes with 'xml' if necessary.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and exits.<br><br>


title: DESCRIPTION
content:
<i>xml-c14n</i> is a command-line tool designed for canonicalizing XML documents. XML canonicalization (C14N) is a process that transforms an XML document into a physical representation, a byte stream, that is consistent across different XML parsers and environments. This consistency is crucial for applications like digital signatures, where even a slight change in whitespace or attribute order would invalidate the signature. The tool reads an XML document from standard input or a specified file and outputs its canonicalized form to standard output or an output file. It supports both standard XML Canonicalization 1.0 and Exclusive XML Canonicalization 1.0, which is often used in SOAP and WS-Security contexts by excluding non-declared namespace prefixes from the canonical form. By default, <i>xml-c14n</i> removes comments, resolves character and entity references, and normalizes whitespace, ensuring a deterministic byte-for-byte representation of the document's logical content.


title: CAVEATS
content:
Canonicalization can be complex, especially with DTDs and external entities. While <i>xml-c14n</i> handles standard cases, specific edge cases related to DTD processing or unresolvable external references might lead to unexpected results or errors. The <i>--in-place</i> option should be used with extreme caution as it overwrites the original file, making it prone to data loss if an error occurs.


title: CANONICALIZATION STANDARDS
content:
<i>xml-c14n</i> implements Canonical XML 1.0 by default. The <i>--exc-c14n</i> option allows it to use Exclusive XML Canonicalization 1.0. These standards define precise rules for transforming an XML document into a canonical form, ensuring that logically equivalent documents produce identical byte sequences, regardless of minor differences like whitespace or attribute order.


title: INPUT AND OUTPUT
content:
The command reads XML from the specified <i>FILE</i> argument. If no file is provided, it reads from standard input (<i>stdin</i>), allowing it to be piped from other commands. The canonicalized output is sent to standard output (<i>stdout</i>) unless an output file is specified using the <i>--output</i> option.


title: HISTORY
content:
The concept of XML Canonicalization was developed by the World Wide Web Consortium (W3C) to address the need for a consistent byte-stream representation of XML documents, primarily for digital signatures. The first recommendation, Canonical XML 1.0, was published in 2001. Exclusive XML Canonicalization 1.0 followed in 2002 to address specific needs in Web Services. The <i>xml-c14n</i> command is part of the <I>libxml2</I> utilities, a widely used XML toolkit in the Linux ecosystem, reflecting its importance in XML processing workflows.


title: PARAMETERS
content:
<b>FILE...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Optional.</i> One or more input files in Pyx format. If no files are specified, <i>xml-depyx</i> reads from standard input.<br><br>


title: DESCRIPTION
content:
The <i>xml-depyx</i> command is a utility from the PyXML suite designed for converting XML data represented in the compact, line-oriented Pyx format back into standard XML. Pyx, an abbreviation for "Python XML," provides a simplified, human-readable way to represent XML documents, often used for quick parsing, transformation, or generation in scripting environments. Each line in a Pyx document corresponds to a specific XML event, such as an element start, an element end, text content, or an attribute.<br><br><i>xml-depyx</i> functions as a filter: it reads Pyx-formatted input from standard input (or specified files) and outputs the corresponding well-formed XML document to standard output. This makes it particularly useful in shell pipelines for chained operations. Its primary purpose is to reverse the transformation performed by <i>xml-pyx</i>, allowing users to process or visualize XML data that was previously converted into the Pyx style. While part of the older PyXML distribution, it remains a simple and effective tool for this specific conversion task.


title: CAVEATS
content:
<i>xml-depyx</i> is part of the PyXML project, which is considered legacy. Modern Python development typically uses <i>xml.etree.ElementTree</i> (standard library) or <i>lxml</i> for more robust and feature-rich XML processing. Consequently, <i>xml-depyx</i> might not be actively maintained and could have limitations in handling very complex or malformed Pyx inputs, or in terms of performance for extremely large XML documents compared to contemporary parsers.


title: PYX FORMAT OVERVIEW
content:
The Pyx format is a line-oriented representation of XML, designed for simplicity and ease of parsing. Each line denotes a specific XML event:<br><br><b>(element_name</b>: Start of an element<br><b>)element_name</b>: End of an element<br><b>Aattribute_name value</b>: Attribute of the preceding element<br><b>-text_content</b>: Text content within an element<br><b>#comment_text</b>: XML comment<br><b>?pi_target pi_data</b>: Processing instruction<br><br>This format simplifies command-line processing and debugging of XML structures.


title: EXAMPLE USAGE
content:
To convert a Pyx file to XML:<br><br><code><b>xml-depyx < input.pyx > output.xml</b></code><br><br>To process Pyx input from a pipe:<br><br><code><b>generate_pyx_data | xml-depyx > output.xml</b></code><br><br>You can also specify input files directly:<br><br><code><b>xml-depyx file1.pyx file2.pyx > combined_output.xml</b></code>


title: HISTORY
content:
The <i>xml-depyx</i> command emerged as part of the broader PyXML project, an influential collection of Python modules and utilities for XML processing in the late 1990s and early 2000s. PyXML aimed to provide comprehensive XML support for Python before much of the functionality was integrated into Python's standard library. <i>xml-depyx</i> specifically addressed the need to convert from the compact Pyx representation back to standard XML, complementing <i>xml-pyx</i>. While PyXML's direct use has waned with the rise of improved standard library modules and powerful third-party libraries like <i>lxml</i>, tools like <i>xml-depyx</i> represent an early stage in Python's robust XML ecosystem development.


title: SYNOPSIS
content:
<i>`xml-edit` [<B>OPTIONS</B>] <I>input-file</I> [<I>output-file</I>]<br><br>Alternatively, it might support piped input:<br>`cat <I>input-file</I> | xml-edit [<B>OPTIONS</B>] > <I>output-file</I>`</i>


title: PARAMETERS
content:
<b><b>-x</b> <I>xpath-expression</I>, <b>--xpath</b> <I>xpath-expression</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies an <B>XPath</B> expression to select the target nodes or attributes for the operation.</i><br><br><b><b>-s</b> <I>value</I>, <b>--set-value</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the text content of the selected element or the value of the selected attribute to the specified <I>value</I>.</i><br><br><b><b>-A</b> <I>name</I>=<I>value</I>, <b>--add-attribute</b> <I>name</I>=<I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Adds a new attribute with the given <I>name</I> and <I>value</I> to the selected element(s). If the attribute already exists, its value is updated.</i><br><br><b><b>-D</b>, <b>--delete</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deletes the nodes or attributes selected by the <B>XPath</B> expression.</i><br><br><b><b>-N</b> <I>element-name</I>, <b>--new-element</b> <I>element-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Creates a new element with <I>element-name</I> under the node selected by <B>XPath</B>. Can be combined with <B>-s</B> or <B>-A</B> to set initial content/attributes.</i><br><br><b><b>-i</b>, <b>--in-place</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Modifies the input file directly, overwriting its original content. Caution is advised when using this option.</i><br><br><b><b>-o</b> <I>file</I>, <b>--output</b> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Directs the modified XML output to the specified <I>file</I> instead of standard output.</i><br><br><b><b>-P</b>, <b>--pretty-print</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Reformats the output XML with proper indentation and line breaks for human readability.</i><br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays a help message and exits.</i><br><br>


title: DESCRIPTION
content:
<i>The `xml-edit` command is conceived as a powerful, versatile command-line utility designed for modifying XML documents non-interactively.<br><br>While `xml-edit` is not a standard, universally distributed Linux command, its conceptual role is to provide capabilities for scripting and automating XML transformations. It would typically allow users to select specific nodes or attributes within an XML file using <B>XPath expressions</B>, and then perform various operations such as setting new values, adding or deleting elements and attributes, or reformatting the XML structure.<br><br>Such a tool is invaluable for tasks like configuration file management, data transformations in build pipelines, or batch processing of XML datasets, enabling precise modifications without the need for GUI-based editors or complex scripting with general-purpose text tools.</i>


title: CAVEATS
content:
<i>It is critical to note that `<B>xml-edit</B>` is <B>not a standard or widely available Linux command-line utility</B> in most distributions. This description outlines the conceptual functionality of such a tool, based on common needs for command-line XML manipulation.<br><br>Users seeking similar functionality should explore well-established alternatives such as:<br><br><ul><li><B>xmlstarlet</B>: A comprehensive toolkit for XML operations.</li><li><B>xmllint</B>: Part of libxml2, offers validation, pretty-printing, and some transformation capabilities.</li><li><B>xq</B> (with <B>jq</B>): For converting XML to JSON and then using <B>jq</B> for powerful data manipulation.</li><li><B>sed</B>/<B>awk</B>: For simple, pattern-based text replacements, though not XML-aware.</li></ul><br>Relying on a command named `<B>xml-edit</B>` without confirming its existence and specific implementation in your environment could lead to unexpected results.</i>


title: HISTORY
content:
<i>While a specific `xml-edit` command does not have a documented history of widespread adoption, the need for robust command-line XML manipulation tools arose with the increasing use of XML for configuration, data exchange, and web services. This led to the development of various utilities like `xmlstarlet` and `xmllint` that provide similar programmatic editing capabilities, often used in shell scripts for automated tasks.</i>


title: PARAMETERS
content:
<b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include attribute names in the listing along with element names.<br><br><b>-u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List only unique element names found in the document, avoiding duplicates.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List element names along with their associated text content (values).<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Count the occurrences of each unique element name.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pretty print the output for better readability.<br><br><b>--omit-decl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Omit the XML declaration (e.g., &lt;?xml version="1.0"?&gt;) from the output, if applicable to the underlying tool.<br><br><b>--net</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable network access for resolving DTDs or schemas, if required by the document.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b>FILE...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more XML files to process. If no file is specified, it typically reads from standard input (stdin).<br><br>


title: DESCRIPTION
content:
The <i>xml-elements</i> command, often a conceptual representation or implemented using utilities like <b>xmlstarlet</b> (specifically its <b>el</b> subcommand), is designed to extract, list, and analyze element names within XML documents.<br><br>Its primary purpose is to provide a quick overview of the structural components of an XML file, helping users understand the document's schema or content without needing to parse the entire file manually.<br><br>It can list all element names, unique names, or even count occurrences, making it invaluable for XML validation, data exploration, and scripting tasks involving XML data. While not a standalone command universally present in all Linux distributions, its functionality is commonly provided by widely available XML processing suites.


title: CAVEATS
content:
The <i>xml-elements</i> command is not a universally standardized command found in all Linux distributions' default installations. Its core functionality is most commonly provided by the <b>xmlstarlet</b> utility, specifically its <b>el</b> (elements) subcommand. Users might need to install <b>xmlstarlet</b> or a similar XML toolkit to access this functionality.<br><br>The exact options and behavior might vary slightly depending on the specific implementation or version of the underlying XML processing tool being used.


title: COMMON USE CASES
content:
Identifying all unique tags in a large XML dataset.<br>Auditing XML files for specific element names or structural components.<br>Quickly understanding the structure of an unfamiliar XML document.<br>Generating reports or summaries on element usage within a collection of XML files.


title: HISTORY
content:
While there isn't a specific 'xml-elements' command with a singular history, the functionality it represents (extracting element names) has been a core requirement for XML processing since its inception. Tools like <b>xmlstarlet</b>, which provides the <b>el</b> subcommand, emerged in the early 2000s to offer robust command-line XML manipulation. <b>xmlstarlet</b> itself was first released around 2002 by Mikhail Grushko and has since become a de-facto standard for command-line XML operations on Unix-like systems, continuously evolving to meet modern XML processing needs.


title: DESCRIPTION
content:
The <b>xml-escape</b> command is a utility designed to convert special characters found in text data into their corresponding XML entity references. This process, known as XML escaping, is crucial when embedding arbitrary text within XML documents to prevent parsing errors and ensure the document remains well-formed.<br><br>It typically reads input from standard input (stdin) and writes the escaped output to standard output (stdout). The characters commonly escaped include: <i>less than</i> (< becomes &amp;lt;), <i>greater than</i> (> becomes &amp;gt;), <i>ampersand</i> (&amp; becomes &amp;amp;), <i>single quote</i> (' becomes &amp;apos;), and <i>double quote</i> (" becomes &amp;quot;).<br><br>This command is often used in scripting pipelines where data needs to be prepared for inclusion in XML fields, attributes, or CDATA sections, ensuring that the XML parser correctly interprets the content rather than seeing the special characters as structural XML markup.


title: CAVEATS
content:
<i>Limited Scope</i>: The command primarily focuses on the five standard XML predefined entities (&amp;lt;, &amp;gt;, &amp;amp;, &amp;apos;, &amp;quot;). It does not handle other character encoding conversions or arbitrary Unicode character escaping beyond these basic entities.<br><i>No Validation</i>: <b>xml-escape</b> is a simple filter; it does not perform any XML validation on its input. It assumes the input is plain text or partial XML content that needs specific characters escaped.<br><i>Input/Output Streams</i>: It typically operates on standard input (stdin) and standard output (stdout). Users must manage file redirection appropriately, as it does not usually take file arguments directly.


title: COMMON USAGE
content:
The <b>xml-escape</b> command is designed to be used as a filter in shell pipelines. It reads data from standard input and prints the escaped data to standard output. This makes it highly versatile for integrating into scripts for data transformation.<br><br><b>Examples:</b><br>1. Escaping a literal string:<br><i>echo "&lt;tag&gt;Value &amp; More&lt;/tag&gt;" | xml-escape</i><br>2. Escaping content from a file:<br><i>cat input.txt | xml-escape &gt; output.xml</i><br>3. Piping output to another XML utility:<br><i>generate_data_command | xml-escape | xmllint --format -</i>


title: HISTORY
content:
The concept of XML escaping is fundamental to XML itself, introduced with its specification. Utilities like <b>xml-escape</b> emerged as part of larger XML processing toolkits, such as the <i>libxml2</i> library. <i>libxml2</i> is a widely used C library for parsing and manipulating XML documents, developed by Daniel Veillard. Simple command-line tools like <b>xml-escape</b> are often provided as convenient wrappers around core library functions, making basic XML operations accessible from the shell. Its development history is tied to the evolution of XML tools on Unix-like systems, emphasizing simplicity and pipeline compatibility.


title: SYNOPSIS
content:
<i>N/A</i><br>There is no universally recognized 'xml-format' command with a standard synopsis. The method for formatting XML depends on the specific tool used, such as <b>xmllint</b> or <b>xmlstarlet</b>.


title: DESCRIPTION
content:
The command <b>xml-format</b> is <i>not</i> a standard, standalone utility widely available across all Linux distributions.<br>Typically, when users refer to 'xml-format' on Linux, they are describing the <i>action</i> of pretty-printing or re-indenting an XML document for better readability, rather than invoking a specific command named exactly 'xml-format'.<br><br>The functionality of formatting XML is commonly provided by various XML processing tools available in Linux environments. These tools read an XML input (from a file or standard input) and output a reformatted version, often with proper indentation and line breaks, adhering to XML well-formedness rules.<br><br>Common utilities used for this purpose include <b>xmllint</b> (part of the <i>libxml2-utils</i> package) and <b>xmlstarlet</b> (a separate command-line XML toolkit). These tools offer robust features for parsing, validating, transforming, and formatting XML documents.


title: CAVEATS
content:
The primary caveat is that <b>xml-format</b> is <i>not</i> a direct command. Attempting to execute 'xml-format' directly on most Linux systems will result in a 'command not found' error.<br><br>Users must install and utilize specific XML processing tools (like <b>xmllint</b> or <b>xmlstarlet</b>) to achieve XML formatting. Each tool has its own syntax, options, and capabilities, which need to be consulted via their respective manual pages.


title: COMMON METHODS FOR XML FORMATTING
content:
While 'xml-format' is not a direct command, here are the most common ways to achieve XML formatting on Linux:<br><br><b>1. Using xmllint:</b><br><i>xmllint</i> is a command-line tool for parsing, validating, and formatting XML and HTML documents. It's often pre-installed or easily available via the 'libxml2-utils' package.<br><u>Syntax:</u> <i>xmllint --format [file.xml]</i><br><u>Example:</u> <i>cat input.xml | xmllint --format - > output.xml</i><br><br><b>2. Using xmlstarlet:</b><br><i>xmlstarlet</i> is a powerful command-line XML toolkit that can validate, transform, query, and edit XML documents. Its 'format' subcommand is specifically for pretty-printing.<br><u>Syntax:</u> <i>xmlstarlet fo [file.xml]</i><br><u>Example:</u> <i>xmlstarlet fo input.xml > output.xml</i>


title: SYNOPSIS
content:
Given its non-standard nature, a hypothetical synopsis for <I>xml-list</I> might be:<br><br><B>xml-list</B> [OPTIONS] <I>XML_FILE</I><br><br>or<br><br><B>cat</B> <I>XML_FILE</I> | <B>xml-list</B> [OPTIONS]<br><br>This implies it would accept an XML file as an argument or via standard input.


title: PARAMETERS
content:
<b>-e, --elements</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, list all element names found in the XML document.<br><br><b>-a, --attributes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, list all attribute names and their corresponding values.<br><br><b>-p, --paths</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, list XPath-like paths to elements or attributes.<br><br><b>-f <format>, --format=<format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, specify the output format (e.g., plain text, JSON, YAML) for the listed items.<br><br><b>-n <name>, --name=<name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, filter the output to include only elements or attributes matching the specified name.<br><br><b>-d <depth>, --depth=<depth></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, limit the listing to a certain depth in the XML tree structure.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, display a help message or usage information for the command.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, display version information for the command.<br><br>


title: DESCRIPTION
content:
The command <I>xml-list</I> is <B>not</B> a standard or widely distributed utility found in most Linux distributions' core packages. If such a command were to exist as a general-purpose tool, its probable purpose would be to parse an XML file or stream and list its elements, attributes, or other structural components. It would serve as a lightweight tool for quick inspection of XML document structures, potentially offering filtering capabilities to show specific nodes or paths. Its functionality would likely overlap with more comprehensive XML processing tools like <I>xmllint</I> or <I>xmlstarlet</I>, but possibly with a more focused output on listing rather than validation or transformation.


title: CAVEATS
content:
<B>xml-list</B> is <B>not</B> a standard Linux command. It is highly likely to be a custom script, an alias, or part of a specialized software package not generally available in common distribution repositories. Users encountering this command should investigate its origin and specific implementation within their environment, as its behavior, options, and capabilities will vary significantly from any hypothetical description provided here. Do not expect to find it pre-installed or in standard package managers.


title: COMMON MISCONCEPTION
content:
Users sometimes search for a simple command to 'list' XML content without needing full validation or transformation. While tools like <I>grep</I> can find strings within XML, a true 'list' of elements or attributes based on the XML hierarchy requires an XML-aware parser, which <B>xml-list</B> would hypothetically provide if it were a standard tool.


title: CUSTOM IMPLEMENTATIONS
content:
Many developers create custom scripts named <I>xml-list</I> using scripting languages like Python (with libraries such as <I>lxml</I> or <I>ElementTree</I>), Perl (with <I>XML::LibXML</I>), or Ruby. These custom tools are tailored to specific project needs for listing or extracting particular XML data.


title: HISTORY
content:
There is no documented history of a widely adopted or standardized Linux command named <B>xml-list</B>. Its existence is primarily as a custom utility or a component within specific application environments, developed for niche purposes rather than general XML processing.


title: SEE ALSO
content:
xmllint(1): A command-line XML tool for parsing, validating, and formatting XML documents, part of libxml2-utils., xmlstarlet(1): A versatile command-line XML toolkit for various XML operations including selecting, transforming, and editing XML documents., grep(1): A general-purpose pattern matching tool, often used for simple text-based searches within XML files (though not XML-aware)., awk(1): A powerful programming language for text processing, which can be used for more complex parsing and extraction from XML files when treated as text.


title: SYNOPSIS
content:
<b>xml-p2x</b> [<I>options</I>] <I>input.xml</I><br><br>This command processes <I>input.xml</I> and typically writes the transformed XML to standard output (<I>stdout</I>).


title: PARAMETERS
content:
<b>input.xml</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <I>DocBook XML</I> file to be pre-processed. This is the primary input for the command.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief usage message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information about the script and exits.<br><br>


title: DESCRIPTION
content:
xml-p2x is a specialized utility script primarily utilized as an internal component within the <I>xmlto</I> toolchain. Its core function is to pre-process <I>DocBook XML</I> files, transforming their often complex and verbose structures into a more simplified and manageable intermediate XML format.<br><br>This preparatory step is crucial for subsequent conversions, especially when aiming to generate plain text outputs, <I>man pages</I>, or other non-XML formats where the full richness of DocBook might be cumbersome. By applying specific <I>XSLT stylesheets</I>, xml-p2x streamlines and cleans up the input XML, making it more amenable to further processing by tools like <I>xsltproc</I> or the main <I>xmlto</I> application. End-users typically interact with the higher-level <I>xmlto</I> command, which transparently orchestrates the invocation of xml-p2x as part of its comprehensive conversion pipeline.


title: CAVEATS
content:
xml-p2x is primarily an internal helper script and is not intended for direct end-user interaction. Its behavior and available options are limited, often relying on internal configurations and stylesheets within the <I>xmlto</I> package. It is tightly coupled with the <I>DocBook XML</I> standard and the conversion processes employed by <I>xmlto</I>. Direct usage outside of the <I>xmlto</I> framework is generally discouraged and may lead to unexpected results.


title: ROLE IN DOCBOOK TOOLCHAIN
content:
<I>xml-p2x</I> serves as a crucial intermediate step in converting <I>DocBook XML</I> source files. It takes the original DocBook document and applies a specific <I>XSLT</I> transformation to produce a streamlined, intermediate <I>XML</I> output. This simplified <I>XML</I> is then further processed by <I>xmlto</I> or other tools to generate final outputs like HTML, PDF, or plain text, optimizing the conversion process and ensuring consistency across different output types.


title: HISTORY
content:
xml-p2x emerged as a component within toolchains designed for processing and transforming <I>XML</I>, particularly <I>DocBook</I>, into various output formats. It has been a part of the <I>xmlto</I> project (or similar predecessors) since the early 2000s, evolving as <I>XML</I> and <I>XSLT</I> processing became more sophisticated. Its development focused on addressing the complexities of converting rich <I>XML</I> structures into simpler, often plain-text-oriented formats efficiently.


title: PARAMETERS
content:
<b><i>&lt;xml_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The input XML file to be converted to plain text.<br><br>


title: DESCRIPTION
content:
<i>xml-pyx</i> is a specialized backend script primarily used by the <b>xmlto</b> utility to convert XML documents (especially those following DocBook DTDs) into plain text format. It leverages <b>xsltproc</b> internally, applying specific XSL stylesheets to transform the XML source.<br><br>This tool is not typically invoked directly by users but serves as an internal component for generating text-based output, often for man pages or simple console readability. Its main purpose is to strip formatting and present the content in a human-readable text format, making it suitable for environments where graphical rendering or rich text is not available.


title: CAVEATS
content:
<i>xml-pyx</i> is an internal helper script for <b>xmlto</b> and is generally not intended for direct user interaction. It relies heavily on <b>xsltproc</b> and a set of predefined XSL stylesheets, meaning its behavior is largely dictated by these dependencies rather than direct command-line options. It provides a simple text representation and is not suitable for complex formatting or rich document generation.


title: DEPENDENCY ON XSLT
content:
<i>xml-pyx</i> relies on <b>xsltproc</b> and a set of specialized XSL (Extensible Stylesheet Language) stylesheets to perform its transformations. These stylesheets define how the XML structure should be converted into a plain text layout, handling elements like headings, paragraphs, and lists.


title: ROLE IN XMLTO
content:
Within the <b>xmlto</b> framework, <i>xml-pyx</i> specifically handles the "text" or "plain" output backend. When you use <code><b>xmlto -f text</b> <i>&lt;input.xml&gt;</i></code>, it typically invokes <i>xml-pyx</i> (or a similar mechanism) behind the scenes to generate the final plain text output.


title: HISTORY
content:
<i>xml-pyx</i> is an integral part of the <b>xmlto</b> project, which was developed to simplify the process of converting DocBook XML documents into various output formats. The <b>xmlto</b> suite, including scripts like <i>xml-pyx</i>, has been a staple in Linux distributions for rendering documentation, particularly man pages, from XML sources since the early 2000s. Its development closely follows the evolution of XML and XSLT standards for documentation processing.


title: SYNOPSIS
content:
<b>xml-select</b> [<i>OPTIONS</i>] <i>XPath_expression</i> [<i>FILE</i>...]<br><b>xml-select</b> [<i>OPTIONS</i>] <b>-f</b> <i>XPATH_FILE</i> [<i>FILE</i>...]


title: PARAMETERS
content:
<b><i>XPath_expression</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The XPath expression used to select nodes from the XML document. If not <br>provided via <b>-e</b> or <b>-f</b>, this is typically the first non-option argument.<br><br><b><i>FILE</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more XML files to process. If no files are specified, <i>xml-select</i> <br>reads XML data from standard input.<br><br><b><b>-e</b> <i>expression</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the XPath expression to evaluate. This is an explicit way to <br>provide the expression.<br><br><b><b>-f</b> <i>XPATH_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the XPath expression from the specified <i>XPATH_FILE</i> instead of <br>from the command line.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores insignificant whitespace when parsing the XML document. This can <br>be useful for cleaner output or to avoid matching whitespace-only text nodes.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pretty-prints the XML output, adding indentation and newlines to enhance <br>readability of the resulting XML fragments.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the value (text content for elements, attribute value for <br>attributes) of the selected node(s), stripping all XML tags from the output.<br><br><b><b>-N</b> <i>prefix=uri</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a namespace mapping. This allows XPath expressions to use prefixes <br>for elements and attributes that belong to specific XML namespaces (e.g., <br><i>-N soap=http://schemas.xmlsoap.org/soap/envelope/</i>). Can be used <br>multiple times to define multiple namespaces.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information for <i>xml-select</i> and exits.<br><br>


title: DESCRIPTION
content:
<i>xml-select</i> is a command-line utility for parsing and extracting data from XML documents. It leverages <br>XPath expressions to precisely target and retrieve specific XML elements, attributes, or their textual content. <br>Users can feed XML data via standard input or specify one or more input files. The tool outputs the <br>matching XML fragments or their values to standard output, making it highly suitable for scripting, <br>data extraction tasks, and quick inspections of XML structures without the complexity of writing <br>custom scripts or full XSLT transformations. It's built upon the powerful <br>Perl <i>XML::Twig</i> module, offering an efficient and lightweight method for navigating and <br>extracting information from XML.


title: CAVEATS
content:
<i>xml-select</i> primarily supports XPath 1.0, so advanced features from <br>XPath 2.0 or later may not be available. As a Perl script, its performance <br>on extremely large XML files might not match native compiled XML parsers. <br>The tool is part of the <i>xml-twig-tools</i> package, which may not be <br>pre-installed on all Linux distributions.


title: USAGE EXAMPLES
content:
<b>Extracting an element:</b><br><i>xml-select '//book/title' library.xml</i><br><br><b>Extracting text content:</b><br><i>xml-select -v '//book/author' library.xml</i><br><br><b>Handling namespaces:</b><br><i>xml-select -N x='http://example.com/ns' '//x:data/x:item' document.xml</i><br><br><b>Piping input:</b><br><i>curl http://example.com/api/data.xml | xml-select '//item/price'</i>


title: XPATH VERSION SUPPORT
content:
<i>xml-select</i>'s XPath engine primarily conforms to the <br><b>XPath 1.0</b> specification. Users requiring XPath 2.0 or <br>later features might need to explore alternative XML processing tools.


title: HISTORY
content:
<i>xml-select</i> is a key component of the <i>xml-twig-tools</i> suite, <br>developed by Michel Rodriguez. Its foundation is the <br><i>XML::Twig</i> Perl module, which is renowned for its efficient, <br>event-driven parsing approach, particularly beneficial for handling <br>large XML documents by processing them in chunks rather than loading <br>the entire document into memory. This design philosophy has made <br><i>xml-select</i> a persistent and valuable tool in the Perl and Linux <br>ecosystems for XML manipulation.


title: PARAMETERS
content:
<b><I>file.xml</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the XML file to be validated. This is typically the only required argument.<br><br><b>--dtdvalid <I>URL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates the XML document against the DTD specified by the provided <I>URL</I>. This option is passed directly to <b>xmllint</b>.<br><br><b>--relaxng <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates the XML document against the RelaxNG schema specified by <I>file</I>. This option is passed directly to <b>xmllint</b>.<br><br><b>--schema <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates the XML document against the W3C XML Schema (XSD) specified by <I>file</I>. This option is passed directly to <b>xmllint</b>.<br><br><b>--noout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses output of the XML document itself, showing only errors. This is very common when only validation status is desired and is often implied or default for <b>xml-validate</b> wrappers.<br><br><b>--postvalid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs DTD validation after parsing. This option is passed directly to <b>xmllint</b> and often implies --valid.<br><br><b>--xinclude</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes XInclude elements within the document before validation. This can be important if included content affects validity.<br><br><b>--nonet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables network access for fetching DTDs or schemas. Useful for validation against local files or in environments without internet access.<br><br>


title: DESCRIPTION
content:
The <b>xml-validate</b> command is a utility designed to check the well-formedness and validity of XML documents. Often, it acts as a convenient wrapper script for <b>xmllint</b>, specifically invoking it with options like <i>--valid</i> or others necessary for schema validation. Its primary purpose is to ensure that an XML file adheres to its Document Type Definition (DTD) or a specified XML schema (like XML Schema Definition (XSD) or RelaxNG).<br><br>When executed, <b>xml-validate</b> processes the input XML file and reports any parsing errors, well-formedness issues, or validation failures to standard error. A successful validation typically results in no output (unless configured otherwise) and an exit code of 0, making it ideal for use in automated scripts, CI/CD pipelines, or pre-commit hooks where XML compliance is critical. It simplifies the validation process by abstracting away the more verbose <b>xmllint</b> command arguments for common validation tasks.


title: CAVEATS
content:
<b>xml-validate</b> is frequently a simple shell script wrapper around the more powerful <b>xmllint</b> command (part of the <i>libxml2</i> library). As such, its exact behavior and available options can vary slightly depending on the distribution and how the wrapper script is implemented. It relies entirely on <b>xmllint</b>'s capabilities, meaning it generally supports DTD, W3C XML Schema (XSD), and RelaxNG for validation, but may not support other schema languages like Schematron natively. Error messages are typically verbose, originating directly from <b>xmllint</b>'s parsing and validation engine.


title: EXIT CODES
content:
The command typically returns an exit code of <b>0</b> if the XML document is well-formed and valid according to the specified DTD or schema. A non-zero exit code (e.g., <b>1</b> or higher) indicates that the document is either not well-formed, invalid, or an error occurred during processing.


title: SCHEMA SUPPORT
content:
<b>xml-validate</b>, through <b>xmllint</b>, natively supports validation against DTDs (Document Type Definitions), W3C XML Schemas (XSD), and RelaxNG schemas. The specific schema type is typically inferred or explicitly specified using options like <i>--dtdvalid</i>, <i>--schema</i>, or <i>--relaxng</i>.


title: HISTORY
content:
The <b>xml-validate</b> command emerged as a user-friendly front-end to the validation capabilities of <b>xmllint</b>, which is the command-line interface for <i>libxml2</i>, a foundational XML toolkit developed by Daniel Veillard. Rather than being a standalone project, <b>xml-validate</b> is often distributed as part of <i>libxml2-utils</i> or similar packages in Linux distributions, providing a quick way to perform basic XML validation without delving into the broader set of <b>xmllint</b> options. Its development history is thus intertwined with the evolution of <i>libxml2</i> itself, focusing on making common validation tasks more accessible.


title: PARAMETERS
content:
<b>--dtd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the XML document against its declared Document Type Definition (DTD).<br><br><b>--relaxng</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the XML document against a RelaxNG schema.<br><br><b>--xsd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the XML document against a W3C XML Schema.<br><br><b>&lt;xml_file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the XML file to be checked or validated.<br><br>


title: DESCRIPTION
content:
<i>xml-xmln</i> is a utility primarily used to check XML files for well-formedness and proper namespace declarations. It acts as a wrapper around the <i>xml-check</i> command, providing a simplified interface for XML validation. The command allows users to validate XML documents against various schema types, including Document Type Definitions (DTDs), RelaxNG schemas, and W3C XML Schemas. Its main purpose is to ensure that XML files adhere to XML syntax rules and, optionally, to specified schemas, which is crucial for data integrity and interoperability in XML-based applications. It's often found in Debian/Ubuntu systems as part of the <i>xml-core</i> package.


title: CAVEATS
content:
This command is primarily a wrapper; for more detailed control or different validation engines, <i>xml-check</i> or other dedicated XML processing tools might be necessary. It requires the relevant schema (DTD, RelaxNG, XSD) to be properly linked or accessible from within the XML document or externally specified by the underlying <i>xml-check</i> tool. It's a relatively simple and specialized utility, not a full-featured XML processing suite.


title: PACKAGE INFORMATION
content:
The <b>xml-xmln</b> command is typically found in the <b>xml-core</b> package on Debian-based Linux distributions. This package provides a system-wide framework for managing XML-related tools and configurations, including standardized wrapper scripts for various XML utilities.


title: UNDERLYING TOOL
content:
It functions as a direct wrapper for the <b>xml-check</b> command. While <b>xml-xmln</b> provides a simplified interface for common validation tasks, <b>xml-check</b> offers more granular control over XML parsing and validation processes, and <b>xml-xmln</b> essentially passes its arguments to it.


title: HISTORY
content:
<i>xml-xmln</i> is part of the <i>xml-core</i> package, which is a Debian-specific mechanism for managing XML tools and standardizing their behavior across the system. It was developed to provide a user-friendly wrapper for <i>xml-check</i>, simplifying the process of validating XML files against common schema types. Its development focus has been on providing a consistent and easy-to-use interface for basic XML validation within the Debian ecosystem, ensuring system-wide XML compliance and proper handling of XML documents.


title: SYNOPSIS
content:
<b>xmllint</b> [<i>OPTIONS</i>] [<i>FILE...</i> | <b>-</b>]<br><i>FILE...</i> can be one or more XML/HTML files. Use <b>-</b> to read from standard input.


title: PARAMETERS
content:
<b><b>--noout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parse and validate, but suppress outputting the document. Useful for integrity checks.<br><br><b><b>--valid</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the input document against its embedded DTD. Reports validity errors.<br><br><b><b>--dtdvalid <i>URL</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the input document against an external DTD specified by <i>URL</i>.<br><br><b><b>--schema <i>URL</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the document against an XML Schema specified by <i>URL</i>.<br><br><b><b>--relaxng <i>URL</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the document against a RELAX NG grammar specified by <i>URL</i>.<br><br><b><b>--xpath <i>EXPR</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Evaluate an XPath expression <i>EXPR</i> on the document and print the results.<br><br><b><b>--html</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parse the input document as HTML instead of XML, handling HTML specific parsing rules.<br><br><b><b>--format</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reformat the output, pretty-printing the XML document with proper indentation.<br><br><b><b>--noblanks</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove ignorable blank nodes (whitespace) from the output, often used with <b>--format</b>.<br><br><b><b>--c14n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Canonicalize the output, producing a canonical XML representation (Canonical XML 1.0).<br><br><b><b>--encoding <i>ENCODING</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the character encoding for the input document (e.g., <i>UTF-8</i>, <i>ISO-8859-1</i>).<br><br><b><b>--output <i>FILE</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Direct the output of <b>xmllint</b> to the specified <i>FILE</i> instead of standard output.<br><br><b><b>--nowarning</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display warnings, only errors.<br><br><b><b>--noent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Substitute entity references with their values.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version of <b>xmllint</b> and its underlying <b>libxml2</b> library.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print a summary of command-line options.<br><br>


title: DESCRIPTION
content:
<b>xmllint</b> is a powerful command-line utility from the <b>libxml2</b> project, designed for parsing, validating, and formatting XML and HTML documents. It serves as an essential tool for developers, system administrators, and anyone working with structured data formats. Key functionalities include checking for <i>well-formedness</i> (syntactical correctness) and <i>validity</i> against DTDs, XML Schemas, or RELAX NG grammars. <b>xmllint</b> can also pretty-print XML, making complex documents human-readable, and evaluate XPath expressions to extract specific data. Its comprehensive error reporting helps in quickly identifying and rectifying issues within XML files, making it indispensable for debugging and ensuring data integrity in configuration files, web services, and more.


title: CAVEATS
content:
<b>xmllint</b> is primarily designed for well-formed XML and HTML. While robust, it can consume significant memory and CPU for extremely large or complex documents, especially when used with options like <b>--format</b>. Its error messages, though detailed, can sometimes be cryptic to users unfamiliar with XML parsing intricacies. Network access for DTD/Schema resolution can be disabled with <b>--nonet</b> for security or performance reasons.


title: <B>EXIT STATUS</B>
content:
<b>xmllint</b> uses specific exit codes to indicate operation results. A return value of <b>0</b> signifies success (document is well-formed, valid, or command executed successfully). A non-zero exit status indicates an error, such as a parsing error, validation failure, or incorrect arguments, making it suitable for use in shell scripts and automated build processes.


title: <B>COMMON USE CASES</B>
content:
Beyond basic validation, <b>xmllint</b> is frequently used in CI/CD pipelines to validate configuration files (e.g., Jenkins job XMLs, Maven POMs), perform quick syntax checks on generated XML output, and pretty-print XML data for easier debugging and review. Its XPath capabilities are invaluable for extracting specific data points from XML documents in scripts.


title: HISTORY
content:
<b>xmllint</b> originated as a command-line interface to <b>libxml2</b>, a C library for XML parsing developed by Daniel Veillard starting around 1999. <b>libxml2</b> was designed to be fast, robust, and compliant with W3C XML standards. <b>xmllint</b> quickly became a popular and often default XML tool on Unix-like operating systems due to its reliability and comprehensive feature set, providing a simple yet powerful way to interact with XML documents without complex programming. It has since been a staple in scripting, development workflows, and automated validation tasks.


title: SYNOPSIS
content:
<b>xmlstarlet</b> [<i>global_options</i>] <<b>command</b>> [<i>command_options</i>] [<i>arguments</i>]<br><br>Common command forms:<br><b>xmlstarlet sel</b> [<i>options</i>] [<i>file...</i>]<br><b>xmlstarlet ed</b> [<i>options</i>] [<i>file...</i>]<br><b>xmlstarlet tr</b> [<i>options</i>] <i>stylesheet</i> [<i>file...</i>]<br><b>xmlstarlet val</b> [<i>options</i>] [<i>file...</i>]


title: PARAMETERS
content:
<b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>xmlstarlet</b> version information.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the main help message for <b>xmlstarlet</b>, including a list of subcommands.<br><br><b><b>--list-commands</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available subcommands provided by <b>xmlstarlet</b>.<br><br><b><b>--check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks the input XML document for well-formedness without processing.<br><br><b><b>--disable-internal-entities</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the resolution of internal XML entities.<br><br><b><b>--disable-external-entities</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the resolution of external XML entities, preventing network access or file system lookups for DTDs/schemas.<br><br><b><b>--net</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables network access for resolving DTDs, XML Schemas, or XSLT stylesheets.<br><br><b><b>--noent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Replaces XML entities with their corresponding values (entity substitution).<br><br><b><b>--dtdload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads the Document Type Definition (DTD) for validation or processing.<br><br><b><b>--no-blanks</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes ignorable whitespace nodes from the XML document, useful for compacting output or simplifying XPath queries.<br><br><b><b>--recover</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to recover from parsing errors in malformed XML documents, useful for processing non-standard XML.<br><br>


title: DESCRIPTION
content:
<b>xmlstarlet</b> is a powerful and versatile open-source command-line utility designed for processing XML documents. It provides a comprehensive set of tools for various XML-related tasks, including validation against DTD or XML Schema, XSLT transformations, XPath queries for selecting nodes, and in-place editing operations like adding, deleting, or updating elements and attributes.<br><br>Its modular design, utilizing subcommands, makes it highly scriptable and an invaluable tool for automating XML manipulation in shell scripts. <b>xmlstarlet</b> aims to be a lightweight alternative or complement to more heavyweight XML processing libraries, offering quick and efficient command-line access to core XML functionalities.


title: CAVEATS
content:
<b>xmlstarlet</b> generally requires well-formed XML input; malformed documents may cause errors unless the <b>--recover</b> option is used.<br>It primarily supports XPath 1.0, lacking features found in newer XPath 2.0+ specifications.<br>Processing extremely large XML files can be memory-intensive. Error messages for complex operations can sometimes be less descriptive, requiring careful debugging.


title: KEY SUBCOMMANDS OVERVIEW
content:
<b>xmlstarlet</b> operates through a series of dedicated subcommands, each designed for a specific category of XML operation:<br><b>sel</b>: Selects or queries XML nodes using XPath expressions.<br><b>ed</b>: Edits XML documents by inserting, deleting, updating, or renaming nodes and attributes.<br><b>tr</b>: Performs XSLT transformations on XML documents using provided stylesheets.<br><b>val</b>: Validates XML documents against DTDs or XML Schemas.<br><b>fo</b>: Formats XML documents for readability, adding indentation and proper line breaks.<br><b>c14n</b>: Canonicalizes XML documents according to the XML Canonicalization (C14N) specification.<br><b>esc</b>: Escapes special characters within text for use in XML.<br><b>unesc</b>: Unescapes XML entities back to their original characters.


title: HISTORY
content:
<b>xmlstarlet</b> was developed by Roman Bednar, with initial releases around 2004-2005. It was designed to provide a lightweight, scriptable command-line interface leveraging the robust <i>libxml2</i> and <i>libxslt</i> libraries. Over the years, it has become a stable and widely adopted tool in Unix-like environments for efficient XML manipulation and automation.


title: PARAMETERS
content:
<b><i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target output format for the conversion. Examples include <b>html</b>, <b>man</b>, <b>pdf</b>, <b>fo</b>, <b>text</b>, <b>dvi</b>, <b>ps</b>, <b>epub</b>, etc. The availability of formats depends on installed backend tools.<br><br><b><i>XML_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input XML document to be converted.<br><br><b><b>-o</b> <i>directory</i>, <b>--output-dir</b>=<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the directory where the output file(s) should be placed.<br><br><b><b>-x</b> <i>file</i>, <b>--xsl</b>=<i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a custom XSL stylesheet <i>file</i> for the transformation, overriding the default stylesheet selection.<br><br><b><b>-m</b> <i>type</i>, <b>--markup-type</b>=<i>type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the markup type of the input XML document (e.g., <b>docbook</b>), useful when <i>xmlto</i> cannot auto-detect it.<br><br><b><b>-s</b> <i>style</i>, <b>--style</b>=<i>style</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a specific style to be applied (e.g., for DocBook stylesheets).<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the conversion process and commands executed.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress most output messages during conversion.<br><br><b><b>--skip-validation</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip DTD validation of the input XML document.<br><br><b><b>--with-fop</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly tell <i>xmlto</i> to use Apache FOP for XSL-FO processing to PDF.<br><br><b><b>--with-dblatex</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly tell <i>xmlto</i> to use <i>dblatex</i> for DocBook to PDF/PS conversions.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<i>xmlto</i> is a command-line utility designed to simplify the conversion of XML documents into various output formats, such as HTML, PDF, man pages, and plain text. It acts as a front-end to XSLT processors like <i>xsltproc</i>, automating the complex task of applying the correct XSL stylesheets for a given XML document type (e.g., DocBook) and desired output format.<br><br>The command intelligently determines the appropriate XSL stylesheet based on the input XML's root element and the specified output format. It then invokes the underlying XSLT processor and, if necessary, external tools (like Apache FOP for PDF generation from XSL-FO, or <i>dblatex</i> for DocBook to PDF/PS). This makes <i>xmlto</i> an indispensable tool in documentation pipelines, especially for projects utilizing DocBook XML.


title: CAVEATS
content:
<i>xmlto</i> requires an XSLT processor (commonly <i>xsltproc</i>) to be installed on the system. For certain output formats (e.g., PDF, PS), additional backend tools are necessary, such as Apache FOP (for XSL-FO), <i>dblatex</i>, or <i>groff</i>. The absence of these tools will prevent <i>xmlto</i> from generating the desired output for those formats, often resulting in an error indicating missing dependencies. Dependency management can be complex for specific conversion chains.


title: DOCBOOK INTEGRATION
content:
<i>xmlto</i> is heavily utilized within the DocBook ecosystem. It provides an elegant way to convert DocBook XML source files into a wide array of formats including HTML, chunked HTML, PDF, EPUB, man pages, and plain text, simplifying the DocBook toolchain significantly for technical writers and developers.


title: CUSTOMIZATION WITH XSL STYLESHEETS
content:
While <i>xmlto</i> is adept at automatically selecting appropriate stylesheets, it offers robust customization options. Users can specify their own XSL stylesheets using the <b>-x</b> or <b>--xsl</b> option, allowing for highly tailored transformations that meet specific formatting or content requirements.


title: SUPPORTED OUTPUT FORMATS
content:
The flexibility of <i>xmlto</i> is showcased by its support for numerous output formats. Common ones include <b>html</b> (single HTML file), <b>html-nochunks</b> (HTML without chunking), <b>fo</b> (XSL-FO intermediate format), <b>pdf</b>, <b>man</b>, <b>text</b>, <b>epub</b>, <b>dvi</b>, and <b>ps</b>. The actual formats available depend on the presence of the necessary XSLT stylesheets and rendering engines on the system.


title: HISTORY
content:
<i>xmlto</i> was developed as a convenient wrapper around XSLT processors and related tools, primarily to streamline the process of transforming DocBook XML documents into various publishing formats. Its aim was to abstract away the intricate command-line arguments and specific stylesheet paths often required for complex XSLT transformations, thereby making XML-based documentation pipelines more accessible and easier to manage.


title: PARAMETERS
content:
<b><b>-display</b> <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to. If not specified, the value of the <i>DISPLAY</i> environment variable is used.<br><br><b><b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a log of the actions taken by <i><b>xmodmap</b></i>, showing what expressions are parsed and what changes are applied.<br><br><b><b>-quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses output. This is the default behavior when no other output-generating options are specified.<br><br><b><b>-noconnect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i><b>xmodmap</b></i> from connecting to the X server. Useful for checking the syntax of expressions in a file without applying changes.<br><br><b><b>-grammar</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a brief usage message about the expression grammar recognized by <i><b>xmodmap</b></i>.<br><br><b><b>-pk</b> or <b>-pke</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current X keyboard keymap table. <b>-pke</b> includes empty keycode entries.<br><br><b><b>-pm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current X keyboard modifier map, showing which keycodes are bound to which modifier (Shift, Lock, Control, Mod1-Mod5).<br><br><b><b>-pbt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current pointer button map, showing the mapping of physical mouse buttons to logical button numbers.<br><br><b><b>-e</b> <i>expression</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a single <i><b>xmodmap</b></i> expression directly from the command line. Multiple <b>-e</b> options can be used.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <i><b>xmodmap</b></i> to ignore any file specified on the command line and instead attempt to load an initial keymap from <i>~/.Xmodmap</i> (or a system-wide default such as <i>/etc/X11/Xmodmap</i>).<br><br><b><b>-</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads expressions from standard input (<i>stdin</i>) instead of a file.<br><br><b><i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file containing <i><b>xmodmap</b></i> expressions to be executed. If not specified, and <b>-s</b> is not used, no actions are taken unless <b>-e</b> is used.<br><br>


title: DESCRIPTION
content:
<i><b>xmodmap</b></i> is a utility for modifying the keyboard modifier map and keymap table, as well as the pointer button map in the X Window System. It allows users to reassign keys, swap functions of modifier keys (like Caps Lock and Control), and adjust mouse button mappings. The command works by interpreting a list of expressions that specify changes to the X server's keymap. These changes are applied directly to the current X display.<br><br>Common uses include remapping specific keys to different symbols (keysyms), adding or removing keys from modifier sets (e.g., making a key act as a Shift or Alt modifier), or changing the order of mouse buttons. While powerful for direct manipulation of the X server's keymap, <i><b>xmodmap</b></i> is a lower-level tool. For complex international layouts or modern systems, <i><b>setxkbmap</b></i> (which uses the XKB extension) is often preferred, as it provides a more robust and feature-rich way to manage keyboard layouts.


title: CAVEATS
content:
Changes made with <i><b>xmodmap</b></i> are session-specific and not persistent across reboots unless configured to load automatically at startup (e.g., via <i>.xinitrc</i>, desktop environment startup scripts, or an <i>.Xmodmap</i> file).<br><br><i><b>xmodmap</b></i> operates at a lower level than the X Keyboard Extension (XKB), which is managed by tools like <i><b>setxkbmap</b></i>. Using <i><b>xmodmap</b></i> can sometimes interfere with or be overridden by XKB configurations, especially in modern desktop environments that rely heavily on XKB for keyboard layout management. It's generally recommended to use <i><b>setxkbmap</b></i> for complex keyboard layouts or when persistent changes are desired across different XKB configurations.


title: EXPRESSION SYNTAX
content:
<i><b>xmodmap</b></i> accepts various types of expressions for remapping keys and modifiers. Common forms include:<br><i><b>keycode</b> <I>NUMBER</I> <b>=</b> <I>KEYSYM1</I> [<I>KEYSYM2</I> ...]</i>: Assigns keysyms to a physical keycode.<br><i><b>keysym</b> <I>KEYSYM_NAME</I> <b>=</b> <I>KEYSYM1</I> [<I>KEYSYM2</I> ...]</i>: Finds a keycode associated with a keysym and reassigns its keysyms.<br><i><b>add</b> <I>MODIFIER_NAME</I> <b>=</b> <I>KEYSYM1</I> [<I>KEYSYM2</I> ...]</i>: Adds keysyms to a modifier set.<br><i><b>remove</b> <I>MODIFIER_NAME</I> <b>=</b> <I>KEYSYM1</I> [<I>KEYSYM2</I> ...]</i>: Removes keysyms from a modifier set.<br><i><b>clear</b> <I>MODIFIER_NAME</I></i>: Removes all keys from a modifier set.<br><i><b>pointer</b> = <I>BUTTON1</I> <I>BUTTON2</I> <I>BUTTON3</I> ...</i>: Remaps mouse buttons.


title: STARTUP CONFIGURATION
content:
To make <i><b>xmodmap</b></i> changes persistent across X sessions, expressions are typically placed in a file named <i>.Xmodmap</i> in the user's home directory. This file is then usually loaded automatically by the X server during startup or by a session manager (e.g., through <i>.xinitrc</i> or a desktop environment's autostart mechanism) using the command <i><b>xmodmap</b> ~/.Xmodmap</i>. The <i><b>-s</b></i> option can also trigger this loading mechanism.


title: KEYCODES VS. KEYSYMS
content:
Understanding the difference between keycodes and keysyms is crucial for effective use of <i><b>xmodmap</b></i>. A <i>keycode</i> is a hardware-generated number that identifies a physical key on the keyboard. A <i>keysym</i> (key symbol) is a symbolic name for the meaning of a key, such as <i>Shift</i>, <i>a</i>, <i>Return</i>, or <i>Caps_Lock</i>. <i><b>xmodmap</b></i> works by mapping keycodes to a list of keysyms, where different positions in the list correspond to various shift states (e.g., normal, Shift, Mod1+Shift, etc.).


title: HISTORY
content:
<i><b>xmodmap</b></i> is one of the foundational utilities of the X Window System, developed early in its history to provide a direct method for users to customize their input device mappings. For many years, it was the primary tool for remapping keys and adjusting pointer behavior. While it remains functional and useful for simple, ad-hoc changes, its role for comprehensive keyboard layout management has largely been superseded by the X Keyboard Extension (XKB), which offers a more powerful and flexible framework for handling diverse keyboard layouts and variations. Despite the rise of XKB, <i><b>xmodmap</b></i> still holds a place for direct keycode-to-keysym mappings and fine-tuning specific modifier behaviors.


title: PARAMETERS
content:
<b><i>file ...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more text files to display. If no files are specified, <i>xmore</i> reads from standard input.<br><br>


title: DESCRIPTION
content:
<i>xmore</i> is a straightforward text file pager designed for the X Window System. It functions similarly to the traditional Unix `more` command, allowing users to view text content one screenful at a time. Unlike its console counterpart, <i>xmore</i> can launch its own dedicated X window for displaying the content, providing a basic graphical interface for navigation. This makes it particularly useful for examining large text files, viewing command output, or displaying manual pages directly within an X environment without needing a separate terminal emulator. It supports essential navigation commands, such as pressing the spacebar to advance to the next screen, 'q' to quit, and '/' for searching within the displayed text. Its core functionality often relies on wrapping a console pager like `more` or `less` within an `xterm` window.


title: CAVEATS
content:
<i>xmore</i> is typically implemented as a simple shell script wrapper around console pagers like `more` or `less` and an X terminal emulator like `xterm`. Consequently, its specific functionality and available options are largely dictated by the underlying tools it invokes rather than having extensive intrinsic features. It is generally less feature-rich than more modern graphical text viewers. Its availability depends on the X Window System utilities being installed on the system.


title: COMMON USAGE
content:
<i>xmore</i> is frequently used to view the contents of a file directly: `<b>xmore myfile.txt</b>`. <br>It can also be used to paginate the output of another command: `<b>ls -l | xmore</b>` or `<b>man ls | xmore</b>`.


title: HISTORY
content:
<i>xmore</i> emerged during the early development of the X Window System as a utility to bridge traditional Unix command-line tools with the new graphical desktop environment. Its primary aim was to provide a simple, X-native way to paginate text, mirroring the functionality of the console-based `more` command. It served as a basic solution for viewing large text outputs or files without having to switch back to a character-based terminal. Its design as a simple wrapper reflects the pragmatic approach of integrating existing robust tools into the graphical paradigm.


title: SYNOPSIS
content:
<b>xmount</b> [<i>options</i>] <i><source> <mount_point></i><br><b>xmount</b> --unmount <i><mount_point></i>


title: PARAMETERS
content:
<b><i><source></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the input disk image file(s). For segmented images, specify the first segment.<br><br><b><i><mount_point></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directory where the virtual filesystem will be mounted.<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output for troubleshooting.<br><br><b><b>-s</b>, <b>--single_image</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mounts the source as a single virtual disk image, typically <i>/xmount</i> within the mount point.<br><br><b><b>-o</b> <i><FUSE_options></i>, <b>--options</b> <i><FUSE_options></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes specific FUSE options, e.g., <i>ro</i> (read-only, default), <i>allow_other</i>.<br><br><b><b>-r</b>, <b>--read_only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures the mounted image is read-only (this is the default behavior).<br><br><b><b>--offset</b> <i><offset></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts reading data from the specified byte offset in the source image.<br><br><b><b>--size</b> <i><size></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the size of the virtual device to be created from the source image.<br><br><b><b>--cache</b> <i><type></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies caching type: <i>none</i>, <i>memory</i>, or <i>file</i>. File caching requires <i>--cache_path</i>.<br><br><b><b>--cache_path</b> <i><path></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the directory for file-based caching.<br><br><b><b>--disk</b> <i><type></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines how the virtual disk is presented: <i>raw</i> (entire disk) or <i>logical</i> (partitions accessible as files).<br><br><b><b>--eformat</b> <i><format></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly sets the expected input image format (e.g., <i>ewf</i>, <i>raw</i>, <i>vmdk</i>). Auto-detection is usually sufficient.<br><br><b><b>--unmount</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unmounts an already mounted xmount filesystem from the specified mount point.<br><br><b><b>--unmount_on_exit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically unmounts the filesystem when <b>xmount</b> exits gracefully.<br><br>


title: DESCRIPTION
content:
<b>xmount</b> is a command-line utility that enables on-the-fly conversion and mounting of different types of disk image files into a virtual filesystem. Utilizing FUSE (Filesystem in Userspace), it allows users to access content within forensic images (like EWF, AFF, RAW) or virtual machine disk files (VMDK, VHD) without modifying the original image. This is particularly valuable in digital forensics and incident response, providing read-only access to disk images for analysis, carving, or data extraction. It can present the entire disk or specific partitions as virtual block devices, making them accessible to other forensic tools.


title: CAVEATS
content:
<b>xmount</b> requires FUSE to be installed and loaded on the system.<br>The default behavior is read-only. While there are options for write mode, they create separate files for changes, preserving the original image integrity. Using them can be complex.<br>Performance can be affected by the source image size, format, and chosen caching method.<br>Always ensure proper unmounting (<i>fusermount -u</i> or <i>xmount --unmount</i>) to prevent resource leaks or corrupted mount points.<br>Large images and extensive operations may require significant RAM or disk space for caching.


title: USAGE IN FORENSICS
content:
<b>xmount</b> is a cornerstone in digital forensics toolkits. It allows analysts to examine disk images without altering them, adhering to the principle of integrity. By mounting an image as a virtual block device or a set of files, other forensic tools (like <b>foremost</b>, <b>sleuthkit</b>, <b>autopsy</b>) can directly operate on the 'mounted' data, simulating access to a live disk.


title: FUSE INTEGRATION
content:
As a FUSE-based application, <b>xmount</b> operates in user space, which enhances security and simplifies deployment compared to kernel modules. It translates file system operations from the kernel into requests that are handled by the <b>xmount</b> process, which then interprets and serves data from the underlying disk image.


title: HISTORY
content:
Developed by Joachim Metz, <b>xmount</b> originated as a versatile tool primarily for digital forensics investigators. It extended capabilities beyond specific image format mounters (like <b>ewfmount</b> or <b>affuse</b>) by supporting multiple proprietary and open formats, including EnCase EWF, AFF, RAW, VMDK, and VHD. Its reliance on the FUSE framework made it portable and user-friendly, allowing non-root users to mount disk images, which was a significant advancement for forensic analysis workflows.


title: SYNOPSIS
content:
<b><pre>xo [OPTIONS] &lt;DSN&gt;<br>xo [OPTIONS] &lt;COMMAND&gt; [ARGS]</pre></b><br>Common usage involves specifying a Database Source Name (DSN) directly or using subcommands for specific operations.<br>Example DSN: <i>postgres://user:pass@host:port/dbname?sslmode=disable</i>


title: PARAMETERS
content:
<b>-o, --out <dir></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output directory for generated Go files. Defaults to current directory.<br><br><b>-N, --no-tests</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not generate test files.<br><br><b>-t, --template <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specific template set (e.g., 'go', 'json').<br><br><b>-s, --schema <schema></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a database schema to inspect (e.g., 'public' for PostgreSQL).<br><br><b>-T, --table <table_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only generate code for specific tables (can be repeated).<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output during generation.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display <i>xo</i> version information.<br><br><b>--fk <col></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify custom foreign key columns for specific tables.<br><br><b>--suffix <suffix></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suffix to append to generated file names.<br><br><b>--single-file</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output all generated code into a single file.<br><br>


title: DESCRIPTION
content:
<i>xo</i> is an open-source command-line tool written in Go that generates Go source code from a database schema. It connects to a wide variety of relational databases (PostgreSQL, MySQL, SQLite3, Oracle, SQL Server) and introspects their structure (tables, views, columns, foreign keys, stored procedures). Based on this introspection, <i>xo</i> creates Go types, functions, and methods that provide a type-safe and idiomatic Go API for interacting with the database. This approach helps reduce boilerplate code, prevents common SQL injection vulnerabilities by encouraging parameterized queries, and improves development efficiency by providing compile-time checks for database interactions. It's often used in Go projects to build data access layers, serving as an alternative to full-fledged ORMs by providing a lightweight, code-generation approach.


title: CAVEATS
content:
<i>xo</i> is not a standard, pre-installed Linux command-line utility. It must be explicitly installed, typically via Go's package management tools (e.g., <i>go install github.com/xo/xo@latest</i>). While powerful, it has a learning curve, especially for configuring templates and handling complex database schemas or custom Go types. It's primarily useful for Go developers working with relational databases and may not be suitable for all data access patterns.


title: CUSTOM TEMPLATES
content:
<i>xo</i> supports custom user-defined templates, allowing developers to tailor the generated Go code to specific project conventions or add specialized functionalities. This flexibility is a key differentiator from many traditional ORMs.


title: DATABASE SUPPORT
content:
A notable strength of <i>xo</i> is its broad support for various relational database systems, including PostgreSQL, MySQL, SQLite3, SQL Server, and Oracle, making it versatile for diverse development environments.


title: HISTORY
content:
<i>xo</i> was initially developed by Kyle F. Baker (knq) as an open-source project to address the need for type-safe database interactions in Go applications. Its development began around 2015, gaining traction within the Go community for its flexible code generation capabilities. It has since been maintained and extended by various contributors, evolving with Go language features and supporting a broader range of database systems. Its focus has remained on providing a robust, flexible, and non-opinionated way to generate Go code directly from database schemas.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits, detailing command-line options.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <i>xonsh</i> version information and exits.<br><br><b>-c COMMAND</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified COMMAND string. Any provided script will be ignored.<br><br><b>-D KEY=VAL</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a <i>xonsh</i> environment variable for the current session. Can be used multiple times.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces interactive mode, even if a script is provided or stdin is not a TTY.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <i>xonsh</i> as a login shell, loading system and user profile files (like <code>.profile</code> or <code>.bash_profile</code>) before <code>.xonshrc</code>.<br><br><b>--rc {always,on-error,never}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls when the run control file (typically <code>~/.xonshrc</code>) is loaded: 'always' (default), 'on-error' (only on startup errors), or 'never'.<br><br><b>--shell-type {prompt,readline,best}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the interactive shell user interface. 'prompt' is minimal, 'readline' uses GNU readline, and 'best' (default) attempts to use the most capable available.<br><br><b>script [arg ...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified <i>xonsh</i> script file, passing any subsequent arguments to it.<br><br>


title: DESCRIPTION
content:
<i>xonsh</i> is a unique shell that seamlessly blends the best features of traditional Unix shells with the power and flexibility of Python. It allows users to execute shell commands (e.g., <code>ls -l</code>) and Python code (e.g., <code>[x for x in range(10)]</code>) directly within the same command line.<br><br>This hybrid approach enables advanced scripting, data manipulation, and customization by leveraging Python's rich ecosystem of libraries and data structures. <i>xonsh</i> supports familiar shell functionalities like piping, redirections, job control, aliases, and environment variables, alongside a programmable interface. It is cross-platform, compatible with Linux, macOS, and Windows, offering a modern and consistent command-line experience.


title: CAVEATS
content:
While highly versatile, <i>xonsh</i> may present a steeper learning curve for users who are not familiar with Python, as its configuration and advanced scripting heavily rely on Python syntax. Its performance for very simple, repetitive tasks might be marginally slower than traditional shells like Bash or Zsh due to the overhead of the Python runtime.


title: CONFIGURATION
content:
<i>xonsh</i> is extensively customizable via its run control file, typically named <code>~/.xonshrc</code>. This file is a standard Python script, allowing users to define custom aliases, functions, environment variables, and import Python modules to tailor their shell environment to their specific workflow and preferences.


title: EXTENSIBILITY
content:
The shell's functionality can be extended through 'xontribs' (<i>xonsh</i> contributions), which are Python packages designed to add new features, themes, or integrations. This modular design allows users to easily enhance their shell experience with a wide array of community-developed add-ons.


title: SEAMLESS PYTHON INTEGRATION
content:
A core strength of <i>xonsh</i> is its ability to seamlessly execute Python code. Users can directly manipulate Python variables and data structures, call Python functions, and import Python modules alongside traditional shell commands, enabling powerful and complex scripting capabilities without switching environments.


title: HISTORY
content:
<i>xonsh</i> was initially conceived and developed by Anthony Scopatz, with its first significant public release in 2014. The project aimed to create a shell that could bridge the gap between traditional Unix shell capabilities and the expressive power of Python, addressing the need for more sophisticated scripting and automation in command-line environments. Over the years, it has matured through active community contributions, evolving into a robust and cross-platform shell that provides a unique blend of shell and programming language features.


title: SYNOPSIS
content:
<B>Xorg</B> [<I>:display_number</I>] [<I>option</I> ...]<br><br><I>Example</I>: <B>Xorg</B> <I>:1</I> <I>-configure</I>


title: PARAMETERS
content:
<b>-configure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Generates a new</I> <B>xorg.conf</B> <I>configuration file, often used for initial setup or troubleshooting.</I><br><br><b>-config <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Uses the specified</I> <B>xorg.conf</B> <I>file instead of the default paths.</I><br><br><b>-logfile <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Redirects server output and errors to the specified log file.</I><br><br><b>-depth <n></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Sets the default color depth for the display (e.g., 24 for true color).</I><br><br><b>-retro</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Starts the server with a monochrome, retro-style display, primarily for debugging.</I><br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Prints the X server version information and exits.</I><br><br><b>-ac</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Disables access control, allowing any host to connect to the X server. <B>Highly insecure.</B></I><br><br><b>-dpi <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Sets the screen's Dots Per Inch (DPI) value, affecting font and element sizing.</I><br><br>


title: DESCRIPTION
content:
<I>Xorg</I> is the open-source implementation of the <I>X Window System</I>, providing the fundamental building blocks for graphical user interfaces on Linux and other Unix-like operating systems. It acts as a server that manages graphical displays, input devices like keyboards and mice, and communicates with client applications (graphical programs).<br><br>Its primary function is to draw windows, text, and images on your screen, and to relay input events from your devices back to the applications. While users typically interact with Xorg indirectly through a <I>display manager</I> (like GDM, LightDM, or SDDM) or by using commands like <I>startx</I>, it's the core component that enables the visual desktop environment you see. <I>Xorg</I> supports various graphics drivers and input methods, making it highly versatile for different hardware configurations. It relies on configuration files (traditionally <I>xorg.conf</I> or snippets in <I>xorg.conf.d</I>) to define display settings, input device mappings, and other server behaviors, although modern Xorg often auto-detects most settings.


title: CAVEATS
content:
<I>Xorg</I> typically requires root privileges to operate, as it directly interacts with hardware. It is rarely invoked directly by users, but rather by display managers or helper scripts like <I>startx</I>.<br><br>Its configuration can be complex, though modern Xorg versions often manage well with auto-detection. Manual configuration via <I>xorg.conf</I> is still possible but less common.<br><br>Note that <I>Xorg</I> is gradually being replaced by <I>Wayland</I> as the default display server on some Linux distributions, representing a shift in graphical architecture.


title: CONFIGURATION FILES
content:
The primary configuration file for <I>Xorg</I> is <B>xorg.conf</B>, though modern systems often use modular configuration files located in <B>/etc/X11/xorg.conf.d/</B>. These files define screen resolutions, monitor settings, input device mappings, and driver options.


title: LOG FILES
content:
<I>Xorg</I> logs its operations, warnings, and errors to files typically found at <B>/var/log/Xorg.0.log</B> (for the first X server instance). These logs are invaluable for diagnosing display and input device issues.


title: HISTORY
content:
<I>Xorg</I> traces its roots back to <I>XFree86</I>, a widely used open-source implementation of the <I>X Window System</I> that emerged in the early 1990s. In 2004, due to licensing disagreements within the <I>XFree86</I> project, the <I>X.Org Foundation</I> was established, and <I>Xorg</I> was forked from <I>XFree86</I> 4.4 RC2. This new project quickly gained traction and became the de facto reference implementation for <I>X11</I>.<br><br>Over the years, <I>Xorg</I> has seen significant development, including improved hardware support, modularity, and better auto-configuration capabilities, reducing the need for manual <I>xorg.conf</I> files. While still widely used, its role is evolving as new display server protocols like <I>Wayland</I> gain prominence.


title: PARAMETERS
content:
<b>-display <i>&lt;display&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to connect to.<br><br><b>-geometry <i>&lt;geometry&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial window geometry (e.g., <i>800x600+10+10</i>).<br><br><b>-rv</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables reverse video, inverting the colors of the document.<br><br><b>-fullwindow</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the PDF in a new window that fills the screen and has no window manager decorations.<br><br><b>-fullscreen</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to open the PDF in a true full-screen mode, hiding all window and application decorations.<br><br><b>-papercolor <i>&lt;color&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the paper area (e.g., <i>'#F0F0F0'</i>).<br><br><b>-antialias <i>&lt;yes|no&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables font antialiasing (default is <i>yes</i>).<br><br><b>-gdkrgb</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces RGB output using GDK, which might be necessary for certain older X servers or configurations.<br><br><b>-remote <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to an existing xpdf instance with the specified name, or starts a new one if not found.<br><br><b>-pager <i>&lt;page&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the document at the specified page number.<br><br><b>-z <i>&lt;zoom&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial zoom factor. <i>0</i> fits page to window, <i>1</i> fits width, <i>2</i> fits height. A number like <i>100</i> indicates 100% zoom.<br><br><b>-f <i>&lt;first_page&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the document starting from the specified <i>first_page</i>.<br><br><b>-l <i>&lt;last_page&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the document up to the specified <i>last_page</i>.<br><br><b>-cfg <i>&lt;config_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate configuration file to load instead of the default.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the xpdf version information and exits.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a short help message and exits.<br><br>


title: DESCRIPTION
content:
<b>xpdf</b> is an open-source PDF viewer designed for the X Window System. It enables users to display PDF documents, navigate through pages, and perform essential interactions like searching for text and printing. Developed by Derek Noonburg, it was one of the earliest full-featured and widely adopted PDF viewers available for Unix-like operating systems.<br><br>While its direct graphical application development has largely ceased in favor of more modern viewers and the Poppler library (which originated from xpdf's rendering engine), it remains a lightweight and functional option for basic PDF viewing. It is recognized for its simplicity and its foundational role in the development of other PDF tools. Its accompanying command-line utilities, such as <b>pdftops</b>, <b>pdftotext</b>, and <b>pdfinfo</b>, are often bundled with it and continue to be widely used for various PDF manipulation tasks. <b>xpdf</b> provides a robust, albeit vintage, solution for displaying Portable Document Format files in a graphical environment, particularly well-suited for traditional X desktop setups.


title: CAVEATS
content:
<b>xpdf</b> is an older application with its direct development largely ceased. As such, it may not fully support all modern PDF features, such as advanced transparency effects, certain encryption methods, or embedded multimedia content. Users might encounter rendering issues with complex or very recent PDF files. It also lacks features common in modern viewers like tabbed interfaces, annotation tools, or direct cloud integration. For frequently updated and feature-rich PDF viewing, more contemporary applications are generally recommended.


title: CONFIGURATION FILE
content:
<b>xpdf</b> uses a configuration file, typically located at <i>~/.xpdfrc</i>, to customize various settings. These settings include default zoom levels, font paths, rendering options, and other user preferences, allowing for personalization beyond command-line arguments.


title: UTILITIES BUNDLE
content:
The <b>xpdf</b> package is often distributed as a suite of powerful command-line PDF utilities. These include <b>pdfinfo</b> (to extract PDF metadata), <b>pdffonts</b> (to list fonts used in a PDF), <b>pdfimages</b> (to extract images from a PDF), <b>pdftops</b> (to convert PDF files to PostScript), and <b>pdftotext</b> (to convert PDF files to plain text). Many of these utilities are still widely used independently of the <b>xpdf</b> graphical application due to their robust functionality.


title: HISTORY
content:
<b>xpdf</b> was originally developed by Derek Noonburg and first released in 1996. It quickly established itself as a popular and foundational PDF viewer for Unix-like systems, especially those utilizing the X Window System. Its robust and efficient PDF rendering engine was later adopted and significantly enhanced, evolving into the <b>Poppler</b> library. Poppler now serves as the primary backend for many widely used modern PDF viewers (such as <b>Evince</b> and <b>Okular</b>) and numerous PDF manipulation tools. While Poppler continued its active development, the standalone <b>xpdf</b> application's development largely stagnated. It stands as an important piece of open-source history, representing early and successful efforts to provide comprehensive PDF support outside of Adobe's proprietary ecosystem.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints help information for the command.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information about <i>xplr</i>.<br><br><b>-c <CONFIG_FILE>, --config <CONFIG_FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom configuration file to load. Defaults to <i>~/.config/xplr/init.lua</i> or <i>~/.config/xplr/xplr.lua</i>.<br><br><b>-l <LOG_LEVEL>, --log-level <LOG_LEVEL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging level for <i>xplr</i>. Common levels include <i>error</i>, <i>warn</i>, <i>info</i>, <i>debug</i>, <i>trace</i>.<br><br><b>-e <ERROR_LOG_FILE>, --error-log <ERROR_LOG_FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom file path for error logging.<br><br><b>-i <INITIAL_FILTER>, --initial-filter <INITIAL_FILTER></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies an initial filter (fuzzy or regex) to the directory contents upon opening.<br><br><b>-L <INITIAL_LAYOUT>, --initial-layout <INITIAL_LAYOUT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial layout. For example, <i>default</i>, <i>explore</i>, <i>miller_columns</i>. Custom layouts can be defined in the config.<br><br><b>-f <INITIAL_FOCUS>, --initial-focus <INITIAL_FOCUS></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial focused node (file or directory) within the opened directory.<br><br><b>-t <TARGET_DIRECTORY>, --target-directory <TARGET_DIRECTORY></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file to write the path of the last focused node to upon exiting <i>xplr</i>. Useful for integrating with shell scripts.<br><br><b>[PATH]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The optional starting directory path. If not provided, <i>xplr</i> will open in the current working directory.<br><br>


title: DESCRIPTION
content:
<i>xplr</i> (pronounced 'explor') is a highly customizable, ergonomic, and blazing-fast terminal file explorer written in Rust. It aims to provide an efficient and powerful way to navigate and manage files directly from your command line.<br><br>Key features include extensive keyboard-driven navigation, a powerful Lua-based plugin system for deep customization, fuzzy finding, Git integration, a flexible layout system, and support for previewing various file types. Its design emphasizes performance and extensibility, making it suitable for users who demand fine-grained control over their file management workflow.


title: CAVEATS
content:
<i>xplr</i> is designed for modern terminal emulators and performs best with full True Color and Unicode support. Its high degree of customizability, while powerful, may present a steeper learning curve for new users, as much of its functionality is configured via Lua scripts rather than simple command-line flags or a GUI.


title: CONFIGURATION AND CUSTOMIZATION
content:
<i>xplr</i> is configured entirely through a Lua script (typically <i>~/.config/xplr/init.lua</i>). This allows for unparalleled customization of keybindings, layouts, themes, commands, and even adding new functionality through plugins. Users can define complex actions that interact with their shell, external programs, and <i>xplr</i>'s internal state.


title: LUA SCRIPTING AND PLUGINS
content:
The heart of <i>xplr</i>'s extensibility is its embedded Lua interpreter. Users can write Lua functions to extend <i>xplr</i>'s capabilities, create custom commands, manipulate the file system, and interact with the user interface. The community-driven plugin ecosystem further enhances its functionality, providing ready-to-use integrations and features.


title: HISTORY
content:
Developed by <i>sayanarijit</i> and released in 2020, <i>xplr</i> emerged as a modern terminal file explorer aiming to combine the speed of tools like <i>nnn</i> with the deep customizability often associated with <i>ranger</i>. Written in Rust, it leverages the language's performance and safety features. Its unique selling proposition is its Lua-based configuration and plugin system, which allows users to virtually redefine any aspect of its behavior and integrate with external tools, leading to rapid adoption within the power-user community.


title: PARAMETERS
content:
<b>-verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints informative messages about the conversion process.<br><br><b>-alphaout=<I>alpha-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the alpha channel of the XPM image to a separate PGM (Portable GrayMap) file named <I>alpha-file</I>.<br><br><b>-headercomment=<I>comment</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inserts the specified <I>comment</I> string into the header of the output PPM file.<br><br><b>-map=<I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses colors from the specified PPM or PGM image file (<I>filename</I>) for color mapping in the output.<br><br><b>-map-ignore-missing</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from failing if a color from the input XPM is not found in the specified map file.<br><br><b>-keep-pixmap-size</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preserves the original pixmap size without trimming any border (default behavior might remove border).<br><br><b>-map-zero-to-black</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maps the XPM color 'None' (transparent) to black instead of keeping it transparent (or background color).<br><br><b>-map-not-zero-to-white</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maps any non-transparent color in the XPM to white.<br><br><b>-map-to-gray</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts the output to grayscale instead of full color.<br><br><b>-map-to-bw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts the output to black and white, applying dithering for smooth transitions.<br><br><b>-color-from-rgb.txt</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses colors defined in the standard system 'rgb.txt' file for color lookup.<br><br><b>-color-from-rgb.txt-all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses all colors (not just a subset) from the standard 'rgb.txt' file for color lookup.<br><br><b>-no-rgb-txt</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the use of any 'rgb.txt' file for color lookup.<br><br><b>-rgb-txt=<I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative 'rgb.txt' file to use for color lookup.<br><br><b>-gamma=<I>gamma_value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies gamma correction with the specified <I>gamma_value</I> to the output image.<br><br><b>-preserve-gamma</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to preserve the gamma information from the input XPM in the output PPM.<br><br><b>-invert-color-map</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inverts the colors of the output image based on the color map.<br><br><b>-no-pixels</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the PPM header, without any pixel data.<br><br><b>-plain-ppm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the PPM in plain (ASCII) format. Synonym for -plain.<br><br><b>-plain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the PPM in plain (ASCII) format. Synonym for -plain-ppm.<br><br><b>-comment=<I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a user-defined <I>string</I> as a comment to the output PPM header.<br><br><b>-no-comments</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents copying any comments from the input XPM file to the output PPM.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for xpmtoppm.<br><br><b><I>xpmfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input XPM file. If omitted, xpmtoppm reads from standard input.<br><br>


title: DESCRIPTION
content:
<i>xpmtoppm</i> is a powerful utility from the <b>Netpbm</b> package designed to convert <b>XPM</b> (X PixMap) format image files into <b>PPM</b> (Portable PixMap) format. <b>XPM</b> is a text-based image format frequently used for icons and small graphics within the <b>X Window System</b> environment. <b>PPM</b>, on the other hand, is a simple, uncompressed pixelmap format that serves as a versatile intermediate for conversions to and from many other image types within the <b>Netpbm</b> toolkit. The command reads <b>XPM</b> data from standard input if no file is specified, and outputs the resulting <b>PPM</b> data to standard output, making it ideal for piping operations with other <b>Netpbm</b> tools. It provides various options for color mapping, gamma correction, and output formatting to control the conversion process.


title: CAVEATS
content:
<b>XPM</b> is a relatively older image format, primarily associated with the <b>X Window System</b>. While <i>xpmtoppm</i> handles most <b>XPM</b> variants, complex or non-standard <b>XPM</b> files might not be converted perfectly. Transparency in <b>XPM</b> is handled by converting it to <b>Netpbm</b>'s alpha channel (if supported by other tools) or by mapping it to a solid color based on options. For modern web or application use, <b>PNG</b> or <b>JPEG</b> are generally preferred over <b>XPM</b> and <b>PPM</b>.


title: INPUT AND OUTPUT
content:
<i>xpmtoppm</i> is designed for use in shell pipelines. It reads <b>XPM</b> data from standard input if no <I>xpmfile</I> is specified, and always writes the resulting <b>PPM</b> data to standard output. This allows easy chaining with other <b>Netpbm</b> commands or redirection to a file.<br><br>Example: <br><code>cat myimage.xpm | xpmtoppm > myimage.ppm</code>


title: NETPBM INTEGRATION
content:
Being a core component of the <b>Netpbm</b> project, <i>xpmtoppm</i> integrates <b>XPM</b> images into a robust framework for image manipulation. Once an <b>XPM</b> is converted to <b>PPM</b>, it can be further processed by hundreds of other <b>Netpbm</b> utilities (e.g., <I>pnmscale</I>, <I>pnmcrop</I>, <I>pnmflip</I>) or converted to virtually any other image format using tools like <I>pnmtopng</I>, <I>pnmtojpeg</I>, etc.


title: HISTORY
content:
<i>xpmtoppm</i> is an integral part of the <b>Netpbm</b> project, a suite of graphics utilities that originated from Jef Poskanzer's <b>pbmplus</b> package in 1988. The creation of <i>xpmtoppm</i> was driven by the necessity to bridge the specialized <b>XPM</b> format, common in the <b>X Window System</b>, with the versatile <b>Netpbm</b> ecosystem. This allowed <b>XPM</b> images to be seamlessly processed, manipulated, and converted to numerous other formats through the extensive collection of <b>Netpbm</b> tools, thereby enhancing interoperability between different image handling systems during the early days of graphical computing on Unix-like systems.


title: SYNOPSIS
content:
<b>xpra</b> [<i>OPTIONS</i>] <i>COMMAND</i> [<i>ARGUMENTS</i>]<br><br>Common Commands:<br>  <b>xpra</b> <i>start</i> [<i>DISPLAY</i>] [<i>OPTIONS</i>] <i>--COMMAND</i> [<i>ARGS</i>]<br>  <b>xpra</b> <i>attach</i> [<i>PROTOCOL</i>:]<i>HOST</i>[:<i>DISPLAY</i>] [<i>OPTIONS</i>]<br>  <b>xpra</b> <i>stop</i> [<i>DISPLAY</i> | <i>UUID</i> | <i>PID</i> | <i>all</i>]<br>  <b>xpra</b> <i>info</i> [<i>DISPLAY</i> | <i>UUID</i> | <i>PID</i> | <i>all</i>]<br>  <b>xpra</b> <i>list</i><br>  <b>xpra</b> <i>shadow</i> <i>DISPLAY</i> [<i>OPTIONS</i>]


title: PARAMETERS
content:
<b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message for the command and exit.<br><br><b><b>--display=DISPLAY</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the X display to use for the client or server. E.g., <code>:10</code> for server, <code>:0</code> for client.<br><br><b><b>--bind-tcp=[HOST]:PORT</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a TCP socket listener for incoming client connections on the server. Host defaults to <code>0.0.0.0</code> (all interfaces).<br><br><b><b>--bind-ssl=[HOST]:PORT</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an SSL socket listener for secure client connections on the server.<br><br><b><b>--password-file=FILE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a file containing the password for client authentication. Supported by TCP and SSL connections.<br><br><b><b>--ssh=COMMAND</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative <code>ssh</code> command to use for establishing the connection.<br><br><b><b>--daemon=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detach <i>xpra</i> from the terminal and run it in the background (server mode only). Default is <code>yes</code>.<br><br><b><b>--start-child=COMMAND</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start the specified command as a child process of the xpra server. Used to launch applications or desktops.<br><br><b><b>--desktop=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run a full desktop environment instead of forwarding individual applications. Default is <code>yes</code> for <code>start</code> command.<br><br><b><b>--encoding=ENCODING</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the preferred screen encoding (e.g., <code>webp</code>, <code>h264</code>, <code>vp8</code>, <code>png</code>, <code>jpeg</code>, <code>rgb</code>). Negotiated with client.<br><br><b><b>--quality=LEVEL</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the encoding quality level (0-100). Higher is better quality, larger bandwidth.<br><br><b><b>--speed=LEVEL</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the encoding speed level (0-100). Higher is faster encoding, potentially lower quality.<br><br><b><b>--pulseaudio=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable Pulseaudio sound forwarding.<br><br><b><b>--clipboard-sync=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable clipboard synchronization between client and server.<br><br><b><b>--file-transfer=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable file transfer capabilities.<br><br><b><b>--web-enabled=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable the integrated web server for HTML5 client access (server only).<br><br><b><b>--opengl=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable OpenGL acceleration for rendering (client side).<br><br><b><b>--log-level=LEVEL</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level (e.g., <code>info</code>, <code>warn</code>, <code>error</code>, <code>debug</code>).<br><br><b><b>--mmap-enabled=yes|no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable memory-mapped pixel data transfers for local connections, improving performance.<br><br>


title: DESCRIPTION
content:
<i>Xpra</i> is an open-source tool that allows you to run graphical applications and even full desktops on a remote server, and then display them on your local machine. It acts as a 'screen for X', enabling you to disconnect from a remote session and reconnect later from the same or a different client, without losing the state of your running applications.<br><br>Unlike traditional X forwarding (<code>ssh -X</code>), <i>xpra</i> provides better performance over high-latency networks by intelligent screen updates and various encoding options (like WebP, H.264, VP8). It also supports features like sound forwarding (Pulseaudio), clipboard synchronization, file transfer, printing, and webcam forwarding.<br><br><i>Xpra</i> transparently handles network disruptions, allowing for seamless re-attachment to sessions. It can run in various modes, including forwarding individual applications, full desktops, or even shadowing an existing X server. Its robust design makes it an excellent choice for remote development, server administration, or accessing graphically intensive applications from a thin client.


title: CAVEATS
content:
For optimal performance, <i>xpra</i> benefits from low-latency connections, though it is designed to work well over high-latency links. Firewall rules must allow connections on specified TCP/SSL ports. Running an <i>xpra</i> server exposed to the internet without proper authentication (e.g., <code>--password-file</code>, SSH) is a significant security risk. Some advanced desktop environments or applications might have specific rendering requirements that could impact performance or visual fidelity, though <i>xpra</i> generally handles a wide range of applications well. Client-side X server dependencies are required for display.


title: CONNECTION MODES
content:
<i>Xpra</i> supports several ways to connect:<br><ul><li><b>SSH</b>: The most common and recommended method, tunneling <i>xpra</i> over an encrypted SSH connection (<code>ssh://user@host/display</code>).</li><li><b>TCP/SSL</b>: Direct TCP or SSL connections to an <i>xpra</i> server listening on a specific port (<code>tcp://host:port/display</code>, <code>ssl://host:port/display</code>).</li><li><b>Web (HTML5)</b>: The server can expose a WebSocket interface (<code>ws://host:port/</code> or <code>wss://host:port/</code>) allowing clients to connect directly from a web browser without installing <i>xpra</i>.</li><li><b>Local Socket</b>: For clients connecting on the same machine as the server, it uses a local Unix domain socket or named pipe for maximum performance.</li></ul>


title: APPLICATION VS. DESKTOP MODE
content:
<i>Xpra</i> can forward either:<br><ul><li><b>Individual Applications</b>: By specifying a command (e.g., <code>xpra start :10 --firefox</code>), only that application's windows are forwarded. This is ideal for specific tasks.</li><li><b>Full Desktop Sessions</b>: By omitting the command or specifying a desktop environment (e.g., <code>xpra start :10 --start-child=xfce4-session</code>), <i>xpra</i> creates a full virtual desktop, allowing users to interact with a complete remote desktop environment.</li></ul>


title: PERFORMANCE OPTIMIZATION
content:
<i>Xpra</i> uses adaptive encoding and compression to optimize performance. It can dynamically switch between various image and video encodings (e.g., WebP, H.264, VP8 for video-like content; PNG, JPEG for static images) based on network conditions and screen content. Users can fine-tune quality, speed, and compression levels using command-line options to balance visual fidelity and network bandwidth usage.


title: HISTORY
content:
<i>Xpra</i> originated from the desire to create a persistent remote X session similar to <code>screen</code> or <code>tmux</code> for terminal sessions, but for graphical applications. It was first released around 2008-2009, with a core focus on dealing with network disconnections and providing a responsive user experience over varied network conditions. Over the years, it has evolved significantly, incorporating advanced video encodings, sound forwarding, clipboard synchronization, and other modern remote desktop features.<br><br>It's often seen as a more robust and performant alternative to traditional <code>ssh -X</code> forwarding, especially for graphical applications that generate a lot of screen updates or for users on unstable networks. Its ability to suspend and resume sessions makes it a powerful tool for maintaining work continuity on remote servers.


title: PARAMETERS
content:
<b><b>-display</b> <i>display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X server to connect to.<br><br><b><b>-id</b> <i>id</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the window to query by its numeric ID. If not specified, <i>xprop</i> prompts for a window selection by mouse click.<br><br><b><b>-name</b> <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the window to query by its <b>WM_NAME</b> property. This is useful for finding windows by their title.<br><br><b><b>-font</b> <i>fontname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a font to be used when looking up windows by name. This is rarely needed.<br><br><b><b>-root</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that properties of the root window should be displayed. The root window is the desktop background and manages global X server properties.<br><br><b><b>-len</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the output for each property to the first <i>N</i> bytes. This is useful for very large properties.<br><br><b><b>-notype</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>xprop</i> from printing the type of the property. Only the atom name and data will be shown.<br><br><b><b>-noucs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>xprop</i> from attempting to print UCS (Unicode) characters, only Latin-1. Useful for older terminals or character issues.<br><br><b><b>-f</b> <i>format atom</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom format for printing a specific <i>atom</i> property. This allows for fine-grained control over how multi-valued properties are displayed. Can be used multiple times.<br><br><b><b>-spy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints properties of new windows as they are created. This runs continuously, monitoring for new window events.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the program version and exits.<br><br>


title: DESCRIPTION
content:
<i>xprop</i> is a command-line utility used to display the properties of an X Window System window. Properties are arbitrary pieces of data associated with a window, which X applications and window managers use to communicate information, such as the window's title (WM_NAME), its class (WM_CLASS), or its current state.<br><br>When invoked, <i>xprop</i> can either prompt the user to select a window by clicking on it, or it can operate on a window specified by its ID, name, or the root window. It then retrieves and prints all properties associated with that window by default, or specific properties if requested. The output includes the property's atom name, its type (e.g., STRING, ATOM, CARDINAL), and its format (8-bit, 16-bit, or 32-bit values), followed by the property's actual data. This tool is invaluable for debugging X applications, understanding how window managers interact with windows, and for scripting purposes to query window states.


title: CAVEATS
content:
Understanding the output of <i>xprop</i> requires familiarity with X Window System concepts like atoms, property types, and data formats. Property names are case-sensitive. The command requires a running X server and appropriate display permissions. When selecting a window by clicking, rapidly moving or disappearing windows can be difficult to target.


title: INTERACTIVE MODE
content:
If no specific window is identified using <b>-id</b>, <b>-name</b>, or <b>-root</b>, <i>xprop</i> enters an interactive mode. In this mode, the cursor changes to a crosshair, prompting the user to click on any visible window on the screen. Upon clicking, <i>xprop</i> will then display the properties of the selected window and exit, unless <b>-spy</b> is used.


title: PROPERTY TYPES AND FORMATS
content:
The output of <i>xprop</i> typically includes the property's atom name, followed by its type and format. The <i>type</i> (e.g., STRING, ATOM, CARDINAL) indicates the kind of data stored. The <i>format</i> specifies the size of each data element in bits (8, 16, or 32). For example, <b>WM_NAME(STRING) = "My Window Title"</b> indicates a property named <b>WM_NAME</b>, of type <b>STRING</b>, containing the specified text. Understanding these distinctions is crucial for correctly interpreting the property values.


title: HISTORY
content:
<i>xprop</i> is a long-standing utility within the X Window System's suite of diagnostic tools. It has been part of the standard X distribution for many decades, serving as a fundamental component for developers and system administrators to inspect and understand the state of X windows and their interactions. Its core functionality has remained largely consistent, reflecting the stable nature of the X protocol's property mechanisms. It is currently maintained as part of the Xorg project's <i>x11-utils</i> package.


title: PARAMETERS
content:
<b><i>INPUT_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input file containing XQX-encoded data. If omitted, <b>xqxdecode</b> typically reads from standard input (stdin).<br><br><b><i>OUTPUT_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file where the decoded binary data will be written. If omitted, <b>xqxdecode</b> typically writes to standard output (stdout).<br><br><b>-o <i>OUTPUT_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alternative way to specify the output file. Some decoding utilities might use an explicit option for output rather than a positional argument.<br><br><b>-i <i>INPUT_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alternative way to specify the input file. Similar to -o, some utilities prefer an explicit option for input.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits. This is a common option for most command-line utilities.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information about the <b>xqxdecode</b> utility and exits. Another common diagnostic option.<br><br>


title: DESCRIPTION
content:
<b>xqxdecode</b> is an extremely obscure and non-standard Linux command designed to decode data that has been encoded using the <i>XQX</i> encoding scheme. The <i>XQX</i> encoding is a proprietary or custom binary-to-text encoding, likely developed in the early days of personal computing and networking. Its primary purpose was to transmit 8-bit binary data over communication channels that were primarily designed for 7-bit ASCII characters, such as early fax modems or specific terminal protocols.<br><br>Similar to other binary-to-text encodings like UUEncode or Base64, its function was to "clean" binary data by converting it into a printable ASCII representation, preventing issues like control characters corrupting data streams or being misinterpreted by intermediary systems. The <b>xqxdecode</b> command would reverse this process, taking the ASCII-encoded stream and converting it back into its original binary form. Due to its highly specialized and possibly proprietary nature, <b>xqxdecode</b> is not part of standard Unix or Linux distributions and its documentation is virtually non-existent in common repositories. Its usage is extremely rare in modern systems, confined potentially to legacy systems or historical data recovery contexts.


title: CAVEATS
content:
The <b>xqxdecode</b> command is extremely obscure and not part of standard Linux distributions. Specific documentation, including a definitive list of command-line options and behaviors, is very scarce. The parameters listed are based on common conventions for similar decoding utilities rather than explicit official documentation for <b>xqxdecode</b>. It may not be available on most modern systems without manual compilation from historical sources.


title: HISTORY
content:
The <b>xqxdecode</b> utility, along with its <i>XQX</i> encoding counterpart, appears to originate from specialized or custom software packages developed in the early to mid-1990s. It was likely used in contexts requiring the transmission of binary data over '7-bit clean' channels, such as early fax software or specific modem communication protocols, where standard binary data could cause issues. Its development and usage are intrinsically tied to the challenges of data transmission in the pre-broadband internet era.


title: PARAMETERS
content:
<b><b>-q</b>, <b>--query</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Queries the current state of the RandR extension, showing detected outputs, their connected status, and available modes.<br><br><b><b>--output</b> <i>&lt;output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific display output to configure (e.g., <i>HDMI-1</i>, <i>DP-1</i>, <i>eDP-1</i>).<br><br><b><b>--mode</b> <i>&lt;mode&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the resolution for the specified output (e.g., <i>1920x1080</i>). The mode must be supported by the output.<br><br><b><b>--rate</b> <i>&lt;rate&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the refresh rate in Hz for the specified output and mode (e.g., <i>60</i>).<br><br><b><b>--pos</b> <i>&lt;x&gt;x&lt;y&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the output's top-left corner at the specified pixel coordinates relative to the screen's top-left.<br><br><b><b>--auto</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically configures the output to its preferred mode and turns it on.<br><br><b><b>--off</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns off the specified output, disabling the display.<br><br><b><b>--primary</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Designates the specified output as the primary display.<br><br><b><b>--left-of</b> <i>&lt;other_output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the output to the left of <i>other_output</i>.<br><br><b><b>--right-of</b> <i>&lt;other_output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the output to the right of <i>other_output</i>.<br><br><b><b>--above</b> <i>&lt;other_output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the output above <i>other_output</i>.<br><br><b><b>--below</b> <i>&lt;other_output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positions the output below <i>other_output</i>.<br><br><b><b>--rotate</b> <i>&lt;normal|left|right|inverted&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rotates the display output by 90, 180, or 270 degrees. <i>normal</i> is the default orientation.<br><br><b><b>--reflect</b> <i>&lt;x|y|xy&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reflects the display output along the X, Y, or both axes.<br><br><b><b>--newmode</b> <i>&lt;name&gt; &lt;modeline&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new display mode. <i>modeline</i> values can be generated by tools like <i>cvt</i> or <i>gtf</i>.<br><br><b><b>--addmode</b> <i>&lt;output&gt; &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a previously defined custom mode (using <i>--newmode</i>) to a specific output.<br><br><b><b>--delmode</b> <i>&lt;output&gt; &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a mode from an output. Useful for removing custom modes.<br><br><b><b>--dryrun</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs all actions internally but does not apply them, only prints what would happen.<br><br>


