# CommandSection

title: VPNC-SCRIPT
content:
After a successful connection, <b>vpnc</b> executes a script (by default, <i>/etc/vpnc/vpnc-script</i>) to configure the network interface, add routes, set DNS servers, and manage other network-related settings derived from the VPN server. This script is crucial for the VPN connection to function correctly on the client machine and can be customized for specific network setups.


title: HISTORY
content:
<b>vpnc</b> originated as a pioneering open-source client designed to reverse-engineer and provide a Linux-compatible solution for Cisco VPN Concentrator connections. Before its development, Linux users often relied on proprietary or less stable alternatives. It quickly became a crucial tool for accessing corporate networks, filling a significant gap in open-source VPN capabilities. While still maintained, its usage has somewhat decreased with the rise of other VPN protocols and clients (like <i>OpenConnect</i> for Cisco AnyConnect VPNs), but it remains a robust option for its specific niche of IKEv1/XAuth compatible VPNs.


title: PARAMETERS
content:
<b><b>-s</b>, <b>--summary</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only the summary of free, contrib, and non-free packages, without listing individual non-free packages.<br><br><b><b>-e</b>, <b>--excluded</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows packages that are normally excluded from the report, such as those from the 'non-free-firmware' section, providing a more comprehensive view of all potentially non-free components.<br><br><b><b>-a</b>, <b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed packages, categorizing each as free, contrib, or non-free. This provides a complete inventory of software freedom status on the system.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message explaining the command's usage and options, then exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the version information of the <b>vrms</b> utility and then exits.<br><br>


title: DESCRIPTION
content:
The <b>vrms</b> command, short for <i>Virtual Richard M. Stallman</i>, is a utility specific to Debian and Debian-derived operating systems. Its primary function is to scan the list of installed software packages and identify those that are classified as 'non-free' according to the <br>Debian Free Software Guidelines (DFSG).<br><br>When executed, <b>vrms</b> typically lists each non-free package found, along with a concise explanation for its classification. Following the detailed list, it provides a summary indicating the total number of free, 'contrib' (free software that depends on non-free components), and non-free packages installed on the system.<br><br>The tool serves as an educational and philosophical reminder within the Debian community, encouraging users to be aware of and ideally remove non-free software, aligning their systems with the principles of software freedom championed by Richard M. Stallman and the Free Software Foundation. It does not remove packages, but rather informs the user about their presence.


title: CAVEATS
content:
The <b>vrms</b> command is primarily designed for and most relevant to Debian and its derivatives (like Ubuntu, Mint). Its classification of 'non-free' software strictly adheres to the Debian Free Software Guidelines (DFSG), which may differ from definitions used by other distributions or organizations. It is an informational tool and does not provide functionality to remove or manage packages directly. The report relies on the package metadata provided by the Debian archive and the installed package database.


title: DEBIAN FREE SOFTWARE GUIDELINES (DFSG)
content:
The <b>vrms</b> command bases its classification of 'free' and 'non-free' software on the Debian Free Software Guidelines (DFSG). These guidelines are a set of criteria that Debian uses to determine whether a license is free enough for software to be included in the 'main' archive section of Debian. Software that does not meet these criteria is typically placed in the 'non-free' or 'contrib' sections, which <b>vrms</b> then reports on.


title: PHILOSOPHICAL PURPOSE
content:
Beyond its technical function, <b>vrms</b> serves a significant philosophical purpose within the Debian community. It acts as a gentle reminder and educational tool for users to be aware of the software they are running. By highlighting non-free components, it encourages users to consider the ethical implications of using such software and promotes the adoption of truly free alternatives, aligning with the broader free software movement.


title: HISTORY
content:
The <b>vrms</b> command was developed specifically for the Debian project, reflecting Debian's strong and long-standing commitment to free software principles. Its name, <i>Virtual Richard M. Stallman</i>, is a tribute to Richard M. Stallman, the founder of the Free Software Foundation and a leading advocate for software freedom. The utility has been a part of Debian for many years, serving as a symbolic and educational tool to help users understand and comply with the Debian Free Software Guidelines (DFSG) by identifying non-free components on their systems.


title: SYNOPSIS
content:
<b>vsce</b> <i>&lt;command&gt;</i> [<i>options</i>]<br><br>Common commands:<br><b>vsce package</b> [<i>options</i>] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Packages the current extension into a .vsix file.<br><b>vsce publish</b> [<i>version</i>] [<i>options</i>] &nbsp;Publishes the current extension to the Marketplace.<br><b>vsce login</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Manages publisher login with a Personal Access Token.<br><b>vsce unpublish</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unpublishes an extension from the Marketplace.<br><b>vsce ls-publishers</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lists all publishers for your account.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for a command or for <i>vsce</i> itself.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the current version of the <i>vsce</i> tool.<br><br><b>--yarn</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of Yarn for dependency installation instead of npm during packaging/publishing.<br><br><b>--no-install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips dependency installation (npm install/yarn install) during packaging/publishing.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a 'dry run' of the publish command without actually publishing to the Marketplace. Useful for validation checks.<br><br><b>--baseContentUrl <url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a base URL for content links within the extension package, like images in README.<br><br><b>--baseImagesUrl <url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a base URL for images referenced within the extension package.<br><br><b>--pat <token></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a Personal Access Token (PAT) directly for authentication, overriding stored credentials (primarily for <i>publish</i> and <i>login</i>).<br><br>


title: DESCRIPTION
content:
<i>vsce</i> is the official command-line tool developed by Microsoft for managing Visual Studio Code extensions. It empowers developers to easily package their extensions into a VSIX file, which is the distributable format for VS Code extensions, and then publish them directly to the Visual Studio Code Marketplace. This tool handles the complexities of preparing an extension for distribution, including validation checks, versioning, and secure authentication with the marketplace using Personal Access Tokens (PATs). Beyond packaging and publishing, <i>vsce</i> also provides commands to list publishers, log in/out from the marketplace, and unpublish existing extensions. It is an indispensable utility for any VS Code extension developer aiming to share their creations with the wider VS Code community.


title: CAVEATS
content:
<b>Node.js Requirement:</b> <i>vsce</i> requires Node.js and a package manager (npm or Yarn) to be installed on the system.<br><b>Personal Access Token (PAT):</b> Publishing extensions to the Visual Studio Code Marketplace necessitates a Personal Access Token generated from Azure DevOps with appropriate scopes.<br><b>Package.json Metadata:</b> The tool heavily relies on a well-formed <i>package.json</i> file in the extension's root directory for metadata, versioning, and dependency management.<br><b>Marketplace Validation Rules:</b> <i>vsce</i> enforces strict validation rules set by the Marketplace, which can lead to failures if the extension package does not meet requirements (e.g., missing <i>README.md</i>, invalid icon format, uncommited changes).<br><b>Git Integration:</b> For proper versioning and repository linking, the extension project is expected to be a Git repository, and Git tags can influence publishing behavior and version incrementing.


title: INSTALLATION
content:
<i>vsce</i> is distributed as an npm package and can be installed globally using npm: <br><i>npm install -g vsce</i><br>Ensure Node.js and npm are installed on your system before attempting installation.


title: AUTHENTICATION FOR PUBLISHING
content:
To publish extensions, <i>vsce</i> requires a Personal Access Token (PAT) with 'Marketplace (Publish)' scope from Azure DevOps. Once generated, you authenticate using the <i>vsce login</i> command, which securely stores the token for future publishing operations. Alternatively, the PAT can be passed directly via the <i>--pat</i> option for one-time use or CI/CD pipelines.


title: HISTORY
content:
<i>vsce</i> emerged as an integral part of the Visual Studio Code ecosystem, developed by Microsoft to streamline the process of extension development and distribution. Its inception coincided with the growing popularity of VS Code and the need for a robust, official mechanism to bring extensions to the Marketplace. Since its initial release, <i>vsce</i> has undergone continuous development, adapting to new features in VS Code, changes in the Azure DevOps-backed Marketplace API, and evolving best practices for extension packaging. It quickly became the de-facto standard tool for VS Code extension authors, simplifying complex tasks like VSIX creation and secure publishing.


title: SYNOPSIS
content:
<i>vso</i> [<i>custom_options</i>] [<i>custom_arguments</i>]<br>As 'vso' is not a standard Linux command, its synopsis is entirely dependent on its custom definition. The placeholders '<i>custom_options</i>' and '<i>custom_arguments</i>' refer to any flags or values that the underlying alias, function, or script is designed to accept. Without knowing its specific definition, no standard synopsis can be provided.


title: PARAMETERS
content:
<b><i>custom_options</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Any short options (e.g., <i>-a</i>, <i>-v</i>) or long options (e.g., <i>--help</i>, <i>--verbose</i>) that the custom alias, function, or script is programmed to recognize. These are specific to its individual definition and are not standardized.<br><br><b><i>custom_arguments</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positional arguments (e.g., file paths, names, numerical values) that the custom alias, function, or script expects. Their meaning, required format, and number are determined by the specific implementation of 'vso'.<br><br>


title: DESCRIPTION
content:
The string 'vso' is <b>not a standard, pre-installed command</b> or utility found in common Linux distributions (like Debian, Ubuntu, Fedora, CentOS, Arch Linux, etc.). <br><br>When encountered in a Linux environment, 'vso' almost certainly represents one of the following:<br><ul><li>A custom <b>shell alias</b>, defined by a user or system administrator (e.g., in <i>.bashrc</i>, <i>.zshrc</i>).</li><li>A user-defined <b>shell function</b>.</li><li>A locally created <b>script</b> or executable program, placed in a directory listed in the user's PATH environment variable.</li><li>A typo for another, actual command.</li></ul>Its actual functionality, syntax, and any available options are therefore entirely dependent on how it has been specifically defined on that particular system. There is no universal documentation or expected behavior for 'vso' across different Linux installations.


title: CAVEATS
content:
Because 'vso' is not a standard command, its behavior is highly variable and unpredictable across different systems. <br><br><b>Security Risk:</b> Running 'vso' on an unknown system without first inspecting its definition (e.g., using the <i>type</i> command) could pose a security risk, as it might execute arbitrary and potentially malicious commands.<br><br><b>Portability:</b> Any scripts or workflows relying on 'vso' are not portable to other systems unless 'vso' is explicitly defined there as well in an identical manner.


title: HOW TO IDENTIFY A CUSTOM 'VSO' DEFINITION
content:
To determine what 'vso' does on a specific system, you can typically use the <i>type</i> command in your shell:<br><i>type vso</i><br><br>This command will output whether 'vso' is an alias, a function, a built-in command, or an executable file, and often reveal its full definition. For aliases or functions, the output will show the underlying command(s) that 'vso' executes.


title: EXAMPLE OF DEFINING A CUSTOM 'VSO'
content:
A user might define 'vso' as an alias in their <i>.bashrc</i> file to run a specific command with verbose output:<br><i>alias vso='git status --verbose --show-stash'<br></i><br>Or as a shell function to perform a more complex operation:<br><i>vso() {<br>  echo "Executing verbose operation for: $@";<br>  rsync -avz --progress "$@";<br>}<br></i><br>After adding such a definition to a shell configuration file (like <i>.bashrc</i> or <i>.zshrc</i>), the user would typically need to run <i>source ~/.bashrc</i> (or similar) for the definition to become active in the current shell session.


title: HISTORY
content:
There is no official 'history' for 'vso' as a standalone command, as it does not exist as a part of standard Unix or Linux utilities. However, the practice of creating custom aliases and shell functions for frequently used, complex, or domain-specific commands is a fundamental and long-standing feature of Unix-like operating systems. Users and administrators commonly create such shortcuts to improve productivity and simplify repetitive tasks. 'vso' would simply be one such user-defined shortcut, reflecting a specific need or preference on a given system.


title: SYNOPSIS
content:
<code>vstp</code> is not a standard Linux command. Its syntax, if it were to exist as a specialized tool, would be highly dependent on its specific implementation and purpose.


title: DESCRIPTION
content:
The command <b>vstp</b> is not a standard or widely recognized standalone utility in common Linux distributions like Ubuntu, Fedora, or CentOS. A direct manual page or executable for <b>vstp</b> is typically not found.<br><br>It is highly probable that 'vstp' is either a typo, refers to a highly specialized or proprietary tool not included in standard repositories, or, more likely, is an abbreviation for a networking concept such as <i>Virtual Spanning Tree Protocol (vSTP)</i>. If it were a command, it would theoretically manage or configure aspects related to network virtualization and Spanning Tree Protocol within a virtualized environment.<br><br>On Linux, similar functionalities or protocol implementations are typically handled by a combination of other well-established tools, such as the <b>iproute2</b> suite (for managing network interfaces, VRFs, VLANs, and routing), <b>brctl</b> (for configuring Linux bridges and their STP settings), and potentially higher-level network management software or daemons for specific virtualized network environments (e.g., Open vSwitch, or routing daemons like FRR for routing protocols).


title: CAVEATS
content:
<b>vstp</b> is not a standard part of most Linux distributions. Attempting to execute it will typically result in a 'command not found' error. If you encounter a reference to 'vstp', it is crucial to understand the context, as it might refer to a custom script, an alias, a specific network appliance utility, or a networking protocol concept (like Virtual Spanning Tree Protocol) rather than a direct Linux command.


title: RELATED CONCEPTS
content:
While <b>vstp</b> is not a command, related networking concepts that might be implied include: <br><i>Virtual Spanning Tree Protocol (vSTP)</i>: A variant of STP designed for virtualized network environments. <br><i>VRF (Virtual Routing and Forwarding)</i>: A technology that allows multiple routing tables to coexist within the same router, enhancing network segmentation. <br><i>VLANs (Virtual Local Area Networks)</i>: Used to segment broadcast domains at Layer 2.


title: MANAGING NETWORK TOPOLOGY ON LINUX
content:
Instead of a <b>vstp</b> command, Linux network administrators manage bridge STP settings via <b>brctl</b> (e.g., <code>brctl stp &lt;bridge&gt; {on|off}</code>) and configure complex network virtualizations using <b>iproute2</b> tools for VRFs, VXLANs, VLANs, and more. Advanced virtual networking environments like Open vSwitch provide their own command-line tools (e.g., <b>ovs-vsctl</b>) for managing virtual switches and related protocols.


title: HISTORY
content:
There is no documented history for <b>vstp</b> as a standard, general-purpose Linux command. Its lack of presence in core Linux utilities suggests it has not been a part of mainstream Linux development or usage over time.


title: SYNOPSIS
content:
<i>The term 'vt' commonly refers to a Virtual Terminal or Virtual Console in Linux. There is no standalone 'vt' command in standard Linux distributions. Operations related to Virtual Terminals are typically handled by commands like <b>chvt</b> or <b>openvt</b>.</i><br><br><b>chvt</b> synopsis:<br><b>chvt</b> <I>N</I><br><br><b>openvt</b> synopsis:<br><b>openvt</b> [<I>options</I>] [<I>program</I> [<I>arguments</I>...]]


title: PARAMETERS
content:
<b><b>N</b> (for chvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The virtual terminal number to switch to. Typically a number from 1 to 63.<br><br><b><b>-c</b> <I>N</I> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the console number <I>N</I> to use. If not specified, <b>openvt</b> will try to find the first available VT.<br><br><b><b>-e</b> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified command in a new session. This is the default if a command is given and no VT is specified.<br><br><b><b>-f</b> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force switching to a virtual terminal even if it's already in use. Use with caution.<br><br><b><b>-l</b> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make the new virtual terminal a login shell. This usually means running <b>/bin/login</b>.<br><br><b><b>-s</b> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switch to the new virtual terminal immediately after the command is executed. This is useful when running a single command that takes over the VT.<br><br><b><b>-u</b> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run the program as the invoking user instead of root (if invoked as root). Requires the invoking user to be logged in on the active console.<br><br><b><b>-v</b> (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Be verbose. Display more information about what <b>openvt</b> is doing.<br><br><b><I>program</I> [<I>arguments</I>...] (for openvt)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The command or program to execute on the new virtual terminal, along with its arguments. If omitted, a default shell or login session is started.<br><br>


title: DESCRIPTION
content:
The term 'vt' is commonly used as an abbreviation for 'Virtual Terminal' or 'Virtual Console' in Linux. Unlike commands like 'ls' or 'grep', 'vt' itself is not a standalone executable command found in standard Linux distributions. Instead, it refers to the conceptual environment that provides multiple independent login sessions on a single physical console.<br><br>Linux systems typically provide several virtual terminals (usually accessible via Ctrl+Alt+F1 through Ctrl+Alt+F6, with the graphical environment often on F7). These allow users to have multiple text-based sessions running concurrently, each with its own shell, processes, and environment. Commands like <b>chvt</b> and <b>openvt</b> are used to programmatically interact with and manage these virtual terminals, such as switching between them or launching applications on a new one.


title: CAVEATS
content:
The term 'vt' is not a direct command, which can be a source of confusion. Commands like <b>chvt</b> and <b>openvt</b> often require root privileges (or be part of a 'setuid' helper program) to operate on virtual terminals because they directly interact with the kernel's console device. Misuse of these commands, especially <b>openvt</b> with the <b>-f</b> option, can disrupt other users' sessions or system stability.<br><br>Graphical display managers (like GDM, SDDM, LightDM) typically manage a dedicated virtual terminal (often F7 or F1) for the graphical desktop, which might behave differently than the text-based VTs.


title: ACCESSING VIRTUAL TERMINALS
content:
Users typically switch between virtual terminals using key combinations:<br><b>Ctrl+Alt+F1</b>: Usually the first text console.<br><b>Ctrl+Alt+F2</b> to <b>Ctrl+Alt+F6</b>: Additional text consoles.<br><b>Ctrl+Alt+F7</b> (or higher): Often where the graphical desktop environment runs (e.g., GNOME, KDE).


title: VIRTUAL TERMINALS VS. PSEUDO-TERMINALS
content:
It's important to distinguish Virtual Terminals (VTs) from Pseudo-terminals (PTYs). VTs are direct interfaces to the kernel's console driver, providing full control over the physical display and keyboard. PTYs, on the other hand, are software emulations of terminals, commonly used by terminal emulators (like GNOME Terminal, xterm), SSH sessions, and screen/tmux sessions. While both provide a command-line interface, PTYs operate at a higher level, abstracting away the direct hardware interaction that VTs provide.


title: HISTORY
content:
Virtual Terminals (VTs) have been a fundamental component of Unix-like operating systems since their early days, allowing a single physical terminal (or later, a computer monitor and keyboard) to host multiple independent sessions. In Linux, the concept of VTs was inherited and expanded upon, providing a robust mechanism for multitasking even before the widespread adoption of graphical user interfaces.<br><br>Early Linux systems heavily relied on text-based VTs for all user interaction, with users frequently switching between them for different tasks. The commands like <b>chvt</b> and <b>openvt</b> were developed to provide programmatic control over these VTs, allowing scripts or system processes to manage console sessions. While graphical environments are now dominant, VTs remain crucial for troubleshooting, server management, and as a fallback in case of GUI issues.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;No standard parameters exist as <b>'vue'</b> is not a recognized Linux command.<br><br>


title: DESCRIPTION
content:
The term <b>'vue'</b> does not correspond to a standard, pre-installed command-line utility found in typical Linux distributions (e.g., Debian, Ubuntu, Fedora, RHEL).<br><br>It is highly probable that <b>'vue'</b> is either a typo, refers to a custom script or alias defined by a user, or is conflated with <i>'Vue.js'</i>, a popular JavaScript framework for building user interfaces. Vue.js operates at a different layer (web development) and is not a command-line tool in itself that you would execute directly in a shell like <i>'ls'</i> or <i>'cd'</i>. Therefore, a direct analysis of <b>'vue'</b> as a standalone Linux command with standard options and behaviors is not possible.


title: CAVEATS
content:
Users attempting to execute <b>'vue'</b> on a standard Linux system will typically encounter a <i>'command not found'</i> error.<br><br>If <b>'vue'</b> performs an action on a specific system, it is likely due to a user-defined alias, a custom script located in the system's PATH, or a third-party application that happens to be named <b>'vue'</b> and is installed on that particular system, rather than a universally recognized utility.


title: COMMON MISCONCEPTION
content:
It's common for users, especially those familiar with web development and the <i>Vue.js</i> framework, to mistakenly assume <b>'vue'</b> might be a corresponding Linux command, but they are distinct concepts.


title: CHECKING FOR CUSTOM COMMANDS
content:
To determine if <b>'vue'</b> is a custom command or alias on a specific system, one could use shell built-ins like <i>'type vue'</i> or <i>'which vue'</i>. If it returns a path (e.g., <i>'/usr/local/bin/vue'</i>), it indicates a user-defined script or alias. If it returns <i>'vue not found'</i> or similar, it confirms its non-existence as a recognized command on that system.


title: HISTORY
content:
There is no historical development or usage of <b>'vue'</b> as a standard Linux command, as it does not exist as one in the standard sense.<br><br>Its conceptual association might stem from the <i>Vue.js</i> framework, which began initial development in 2014 by Evan You, but this is entirely unrelated to a standalone Linux command-line utility.


title: SYNOPSIS
content:
<b>vue-build</b> [<i>options</i>]<br><i>(Note: This command is typically an alias or script wrapper for <b>vue-cli-service build</b> within a Vue CLI project.)</i>


title: PARAMETERS
content:
<b>--mode <mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the environment mode for the build process, such as 'production' (default) or 'development'.<br><br><b>--dest <dir></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output directory for the compiled production files. The default is 'dist'.<br><br><b>--report</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an interactive bundle analyzer report, providing insights into the size of various modules in your build.<br><br><b>--report-json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the bundle analyzer report in JSON format instead of an interactive HTML page.<br><br><b>--watch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Monitors source files for changes and automatically rebuilds the application. Useful for continuous integration or specific development workflows.<br><br><b>--target <app | lib | wc | wc-async></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the type of build target: 'app' (default) for a single-page application, 'lib' for a library, or 'wc'/'wc-async' for web components.<br><br><b>--name <lib-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name for the library or web component when building with '--target lib' or '--target wc'.<br><br><b>--filename <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output filename for the generated library or web component bundle.<br><br><b>--no-clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the build command from cleaning (deleting contents of) the destination directory before generating new files.<br><br><b>--modern</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Builds two versions of the application: one for modern browsers leveraging ES modules and one for legacy browsers using older JavaScript syntax, allowing optimal performance across different environments.<br><br>


title: DESCRIPTION
content:
The command <b>vue-build</b> typically refers to the process of compiling a Vue.js application into optimized, static files suitable for production deployment. While not a standalone Linux command in itself, it is most commonly executed as part of an `npm run build` or `yarn build` script within a Vue CLI project, which then invokes `vue-cli-service build`. This underlying process utilizes tools like Webpack to bundle, minify, and optimize all Vue components, JavaScript, CSS, and other assets. Its primary goal is to generate a highly efficient and performant version of the application, often placed in a `dist` directory, ready to be served by any static web server. This includes optimizations such as code splitting, tree-shaking, and asset versioning to ensure minimal file sizes and faster load times.


title: CAVEATS
content:
<b>Not a standalone executable:</b> <b>vue-build</b> is not a native Linux command but typically an alias or script (e.g., `npm run build`) defined within a Vue CLI project's `package.json`, which then executes `vue-cli-service build`. It requires Node.js and a properly set up Vue CLI project.<br><br><b>Requires a Web Server for Deployment:</b> The output of `vue-build` is a set of static HTML, CSS, and JavaScript files. These files must be served by a web server (e.g., Nginx, Apache, or a simple `serve` utility) to be accessible and functional in a browser.<br><br><b>Configuration Complexity:</b> While command-line options provide basic control, advanced build configurations (e.g., Webpack loaders, plugins, aliases) are typically managed through a `vue.config.js` file at the project root, rather than entirely through command-line arguments.


title: CUSTOM CONFIGURATION
content:
Beyond command-line options, the `vue-build` process (specifically `vue-cli-service build`) can be extensively customized via a `vue.config.js` file. This file, located at the root of your project, allows you to modify the underlying Webpack configuration, define proxy settings, adjust asset paths, and integrate custom plugins, providing deep control over the build output without 'ejecting' the Vue CLI's default configurations.


title: DEPLOYMENT CONSIDERATIONS
content:
When deploying a built Vue single-page application (SPA), it's crucial to configure your web server to handle client-side routing. This typically involves setting up a 'fallback' rule that redirects all unknown paths back to your `index.html` file. This ensures that direct access to routes (e.g., `yourdomain.com/about`) or browser refreshes on internal routes do not result in 404 errors, as the server always serves the SPA's entry point, allowing Vue Router to manage the client-side navigation.


title: HISTORY
content:
The build process for Vue applications has significantly evolved with the Vue CLI. Initially, developers often managed Webpack configurations manually. With the release of `@vue/cli` (version 3 and above), the `vue-cli-service` command was introduced as a core dependency within Vue projects. This shift abstracted away complex Webpack setups, providing a standardized, project-local command-line interface for tasks like building, serving, and testing. The common `npm run build` script emerged as the standard way to invoke `vue-cli-service build`, simplifying the development workflow and promoting consistency across Vue projects.


title: PARAMETERS
content:
<b>template</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the template to use for scaffolding. This can be an official template name (e.g., <b>webpack</b>), or a GitHub repository path (e.g., <b>owner/repo</b>).<br><br><b>project-name</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the new project directory to be created. The project files will be initialized inside this directory.<br><br><b>-c, --clone</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of <i>git clone</i> for template download instead of the default API download. Useful for private repositories or specific Git features.<br><br><b>-o, --offline</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a locally cached version of the template if available, avoiding network requests.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information and usage details for the command.<br><br>


title: DESCRIPTION
content:
The <i>vue-init</i> command was a core utility of Vue CLI 2.x, designed to quickly scaffold new Vue.js projects. It allowed developers to initialize a project structure based on predefined templates, such as the official <b>webpack</b> or <b>webpack-simple</b> templates, or even custom templates hosted on GitHub. Upon execution, it would download the chosen template and then prompt the user for configuration details like project name, description, and feature choices (e.g., linting, Vue Router). This streamlined the project setup process, providing a consistent starting point for various types of Vue applications.


title: CAVEATS
content:
The <i>vue-init</i> command is <b>deprecated</b> in Vue CLI 3.x and newer versions. Users are strongly encouraged to use the more advanced and feature-rich <b>vue create</b> command for new projects. <i>vue-init</i> primarily functions when Vue CLI 2.x is installed, or as a legacy fallback. Templates might not be actively maintained and may have compatibility issues with newer Vue versions or build tools.


title: INTERACTIVE PROMPTS
content:
After the template is downloaded, <i>vue-init</i> typically presents a series of interactive prompts. These prompts allow the user to customize various aspects of the new project, such as its name, description, author, whether to include Vue Router, ESLint, or unit testing frameworks, based on the options provided by the chosen template.


title: TEMPLATE LOCATIONS
content:
Templates for <i>vue-init</i> are primarily sourced from GitHub. Official templates like <b>webpack</b> or <b>webpack-simple</b> are shorthand for repositories under the <b>vuejs-templates</b> organization (e.g., <b>vuejs-templates/webpack</b>). Users can also specify custom templates directly from any GitHub repository using the <b>owner/repo</b> syntax, or even local paths for offline template development.


title: HISTORY
content:
Introduced as the primary project scaffolding tool with <b>Vue CLI 2.x</b> (released around 2016-2017), <i>vue-init</i> quickly became the standard method for initializing Vue.js applications. It facilitated rapid development by providing pre-configured project setups. However, with the release of <b>Vue CLI 3</b> in 2018, which brought significant architectural changes and new capabilities like graphical user interfaces and plugin management, <i>vue-init</i> was superseded by <b>vue create</b>. While <i>vue-init</i> could still be used with Vue CLI 3+ if CLI 2.x was installed, its role diminished, marking a shift towards a more modular and extensible CLI experience.


title: PARAMETERS
content:
<b><b>--port</b> &lt;<i>port</i>&gt;, <b>-p</b> &lt;<i>port</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the port on which the development server will run (default: 8080).</i><br><br><b><b>--host</b> &lt;<i>host</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the host on which the development server will listen (default: 0.0.0.0).</i><br><br><b><b>--open</b>, <b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Automatically open the application in the browser upon server start.</i><br><br><b><b>--copy</b>, <b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Copy the server URL to the clipboard upon server start.</i><br><br><b><b>--mode</b> &lt;<i>mode</i>&gt;, <b>-m</b> &lt;<i>mode</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the environment mode (e.g., 'development', 'production') for the build (default: development).</i><br><br><b><b>--https</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enable HTTPS for the development server.</i><br><br><b><b>--public</b> &lt;<i>url</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the public network URL for the HMR (Hot Module Replacement) client to connect to.</i><br><br><b><b>--css-preprocessor</b> &lt;<i>type</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the CSS preprocessor to use (e.g., 'sass', 'less', 'stylus', 'postcss').</i><br><br><b><b>--name</b> &lt;<i>name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify a custom project name for the build output when serving a directory.</i><br><br><b><b>--entry</b> &lt;<i>file</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Explicitly specify the entry file when serving a directory; defaults to 'src/main.js' or 'index.vue'.</i><br><br><b><b>--inline-vue</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Use the inline Vue production build for components. Useful when building a library.</i><br><br>


title: DESCRIPTION
content:
vue-serve is a command-line utility provided by the Vue CLI (Command Line Interface) that allows developers to quickly serve and preview single Vue components or a directory containing Vue components without the need for a full-fledged Vue project setup. It provides a lightweight development server, enabling features like hot-module replacement (HMR) for instant feedback during development. This command simplifies the process of testing UI components in isolation, demonstrating small prototypes, or rapidly iterating on new features. It's particularly useful for component library development, educational purposes, or any scenario where a complete <b>vue create</b> scaffold feels like overkill, offering a streamlined path to bring your Vue components to life in a browser.


title: CAVEATS
content:
<b>vue-serve</b> is intended primarily for rapid prototyping and local development. It is <i>not</i> suitable for generating production-ready builds or deploying applications. For production, the <b>vue-cli-service build</b> command or a similar webpack-based build process should be used. It also assumes a relatively simple component structure and may not fully support complex project configurations or custom webpack setups without further configuration.


title: DEFAULT ENTRY POINTS
content:
<i>When using <b>vue-serve</b> without specifying a particular file, it will attempt to locate a default entry point like <b>src/App.vue</b>, <b>src/main.js</b>, or <b>index.vue</b> within the specified directory.</i>


title: HOT MODULE REPLACEMENT (HMR)
content:
<i><b>vue-serve</b> includes built-in HMR, which automatically reloads and injects updated modules into the running application without a full page refresh, significantly speeding up development feedback loops.</i>


title: HISTORY
content:
The <b>vue-serve</b> command was introduced as part of the Vue CLI 3.x release, which marked a significant architectural shift towards a more plugin-based system. Its purpose was to provide a quick and convenient way to test individual Vue components or small component collections, addressing a need for faster prototyping without the overhead of creating a full project boilerplate. While the <b>vue create</b> command remains the primary method for new projects, <b>vue-serve</b> offered a streamlined alternative for specific development scenarios.


title: SEE ALSO
content:
<b>vue create</b>: <i>Scaffold a new Vue project.</i>, <b>vue build</b>: <i>Build a Vue application for production.</i>, <b>vue inspect</b>: <i>Inspect the webpack configuration.</i>, <b>vue ui</b>: <i>Launch a graphical user interface for managing Vue projects.</i>, <b>npm run serve</b>: <i>A common command used in standard Vue CLI projects to start the development server, typically wrapping <b>vue-cli-service serve</b>.</i>, <b>webpack-dev-server</b>: <i>The underlying server technology often used by Vue CLI for development servers.</i>


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and their usage.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs all collected Vulkan information in JSON format, suitable for programmatic parsing and automation.<br><br><b>--html</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs all collected Vulkan information in HTML format, useful for web display or documentation.<br><br><b>--output <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects the command's verbose output to the specified <i>&lt;file&gt;</i> instead of standard output.<br><br><b>--summary</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a concise summary of Vulkan information, significantly reducing the verbosity compared to the default output.<br><br><b>--vk-api-version <version></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target Vulkan API version to query information for (e.g., "1.1.0"). The command will only report features up to this version.<br><br><b>--color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces colored output, even if the terminal does not automatically support or detect color capabilities.<br><br><b>--no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables colored output, ensuring a monochrome text presentation.<br><br><b>--compact-properties</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reduces the verbosity and line count of physical device property output, making it more concise.<br><br><b>--no-header</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the standard header information typically displayed at the beginning of the command's output.<br><br><b>--display-errors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the display of Vulkan validation errors, even when advanced debug reporting layers are not explicitly enabled.<br><br><b>--check-drivers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to perform a basic check for common Vulkan driver installation issues or missing components. (Availability may vary).<br><br>


title: DESCRIPTION
content:
<i><b>vulkaninfo</b></i> is a command-line utility for Linux that provides comprehensive information about the Vulkan API implementation and the physical devices (GPUs) available on a system.<br>It's an indispensable tool for Vulkan developers, system administrators, and users for debugging, verifying driver installations, and understanding hardware capabilities. The output includes details on available Vulkan layers, extensions, physical device properties, memory heaps and types, queue families, supported formats, and more.<br>It helps identify issues with Vulkan driver setup, confirms the presence of specific hardware features, and provides essential data for optimizing Vulkan applications.


title: CAVEATS
content:
<i><b>vulkaninfo</b></i> requires a correctly installed Vulkan Runtime and compatible graphics drivers supporting the Vulkan API. Without these, the command may fail to execute or report no Vulkan devices.<br>The default output can be extremely verbose, especially on systems with multiple GPUs or extensive driver features. For manageability, consider using options like <i>--summary</i> or redirecting output to a file with <i>--output</i>.<br>This utility is typically part of the <i>vulkan-tools</i> package, which may need to be installed separately on some Linux distributions.


title: OUTPUT VERBOSITY AND FORMAT
content:
By default, <i><b>vulkaninfo</b></i> produces a very detailed human-readable text output. However, it also supports <i>--json</i> and <i>--html</i> options, which are highly beneficial for scripting, automated testing, or integrating Vulkan system information into other applications or web interfaces. The JSON output, in particular, provides a structured and easily parsable representation of all available Vulkan properties.


title: TYPICAL USE CASES
content:
<i><b>vulkaninfo</b></i> is frequently used to confirm that Vulkan drivers are correctly installed and detected, to check for the presence of specific Vulkan extensions required by an application, or to identify the available memory types and heaps on a GPU for optimal memory allocation strategies in Vulkan development.<br>It's also a first-line diagnostic tool when a Vulkan application fails to launch or encounters rendering issues, providing clues about the system's Vulkan environment.


title: HISTORY
content:
<i><b>vulkaninfo</b></i> emerged alongside the official release of the Vulkan API by Khronos Group in February 2016. Developed primarily by LunarG as part of the Vulkan SDK and tools suite, its purpose was to provide a standardized way for developers and users to query detailed information about the underlying Vulkan implementation and hardware capabilities. As the Vulkan ecosystem matured, <i><b>vulkaninfo</b></i> became an essential diagnostic tool, simplifying the process of debugging driver issues, verifying API support, and understanding the nuances of different GPU architectures. Its evolution mirrors the development of the Vulkan API itself, incorporating support for new features, extensions, and best practices.


title: SYNOPSIS
content:
<b>vxdg</b> <I>subcommand</I> [<I>options</I>] [<I>arguments</I>]<br><br>Common <b>subcommands</b> include:<br><b>vxdg init</b> <I>diskgroup</I> <I>disk_name</I>=<I>device</I> [...]<br><b>vxdg import</b> [<I>options</I>] <I>diskgroup</I><br><b>vxdg deport</b> [<I>options</I>] <I>diskgroup</I><br><b>vxdg list</b> [<I>options</I>] [<I>diskgroup</I>]<br><b>vxdg adddisk</b> <I>diskgroup</I> <I>disk_name</I>=<I>device</I> [...]<br><b>vxdg rmdisk</b> <I>diskgroup</I> <I>disk_name</I> [...]


title: PARAMETERS
content:
<b>init</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new disk group, creating its configuration and adding the specified disks.<br><br><b>import</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports a disk group, making it accessible to the local system. Often used when moving disk groups between systems.<br><br><b>deport</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deports a disk group, making it inaccessible to the local system and preparing it for export or shutdown.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists information about disk groups, including their state, disks, and associated volumes.<br><br><b>adddisk</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds one or more physical disks to an existing disk group.<br><br><b>rmdisk</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes one or more physical disks from an existing disk group. Requires disk relocation or unmirroring before removal.<br><br><b>set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies attributes of a disk group or its components, such as activation mode.<br><br><b>mirror</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mirrors disk group configuration to another set of disks for redundancy.<br><br><b>-g <diskgroup></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the disk group on which to perform the operation.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays summary information about disk groups.<br><br><b>-C</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears a disk group's configuration from memory without deporting it (use with extreme caution).<br><br><b>-o <option></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies various operation-specific options, e.g., 'all' to list all disk groups, or 'updateid' for import.<br><br>


title: DESCRIPTION
content:
The <b>vxdg</b> command is a fundamental utility within Veritas Volume Manager (VxVM), a proprietary storage management solution widely used in enterprise environments. Unlike standard Linux commands, <b>vxdg</b> is not natively available and requires the installation of VxVM software. Its primary purpose is to manage <I>disk groups</I>, which are collections of physical disks or LUNs that VxVM treats as a single logical unit.<br><br>Through <b>vxdg</b>, administrators can perform a wide range of operations on these disk groups, including their creation, initialization, importing from other systems, deporting, listing their contents and status, and adding or removing disks. It is crucial for setting up and maintaining resilient storage configurations, enabling features like mirroring, striping, and hot-sparing for volumes managed by VxVM. Proper use of <b>vxdg</b> is essential for maintaining data integrity and availability in VxVM environments.


title: CAVEATS
content:
<b>vxdg</b> is part of Veritas Volume Manager (VxVM), a commercial software suite, and is not a standard utility bundled with Linux distributions. Its usage requires VxVM to be installed and licensed. Incorrect use of <b>vxdg</b> can lead to data loss or corruption, especially when dealing with active disk groups or volumes. Operations like <b>deport</b> and <b>import</b> must be performed carefully to maintain data consistency and availability. Administrative (root) privileges are required to execute most <b>vxdg</b> commands.


title: DISK GROUP CONCEPT
content:
In VxVM, a disk group is a fundamental logical container for physical disks. All VxVM objects, such as volumes and plexes, reside within a disk group. This abstraction allows for centralized management and simplifies operations like moving data between servers or expanding storage capacity.


title: IMPORT/DEPORT BEST PRACTICES
content:
When moving disk groups between servers or during maintenance, it's crucial to <b>deport</b> the disk group gracefully from the source system before <b>importing</b> it on the destination. This ensures metadata consistency and prevents data corruption. Forceful operations should only be used as a last resort in recovery scenarios.


title: HISTORY
content:
Veritas Volume Manager (VxVM) was originally developed by Veritas Software, a company founded in 1982. It became a leading solution for enterprise storage management, providing advanced features like online volume management, mirroring, and striping. Over the years, Veritas Software went through several acquisitions and mergers, notably with Symantec Corporation. The VxVM product line, including the <b>vxdg</b> command, continued to evolve under Symantec, and later as part of Veritas Technologies LLC (which spun off from Symantec). Its design reflects decades of development in robust, high-availability storage infrastructure for mission-critical applications across various Unix-like operating systems, including Linux.


title: SYNOPSIS
content:
vzdump [OPTIONS] <VMID | all><br><br><b>Common Options:</b><br>vzdump --compress <i>{gzip|lzo|zstd|no}</i> --mode <i>{snapshot|suspend|stop}</i> --storage <i><STORAGE_ID></i> --node <i><NODE_NAME></i> <VMID|all>


title: PARAMETERS
content:
<b>VMID</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ID of the virtual machine or container to back up.<br><br><b>all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Back up all virtual machines and containers on the node.<br><br><b><b>--compress</b> <i><gzip|lzo|zstd|no></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the compression algorithm for the backup file. Choosing 'no' disables compression.<br><br><b><b>--mode</b> <i><snapshot|suspend|stop></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines how the guest is handled during backup.<br><i>snapshot</i>: Attempts a live backup using storage snapshots (recommended for minimal downtime).<br><i>suspend</i>: Suspends the guest during backup.<br><i>stop</i>: Stops the guest completely during backup (ensures data consistency but causes downtime).<br><br><b><b>--storage</b> <i><STORAGE_ID></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target backup storage ID where the backup file will be saved. This must be a storage configured in Proxmox.<br><br><b><b>--node</b> <i><NODE_NAME></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Targets a specific node in a cluster when running <i>vzdump</i> from another node. Useful for centralized backup management.<br><br><b><b>--dumpdir</b> <i><PATH></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative local directory to store the backup, overriding the default storage path.<br><br><b><b>--exclude-vmid</b> <i><VMID[,VMID,...]></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude specific VMs or CTs when using the 'all' keyword to back up all guests.<br><br><b><b>--mailto</b> <i><EMAIL></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send email notifications on backup completion or failure to the specified address.<br><br><b><b>--prune-backups</b> <i><policy></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the backup retention policy. Examples: <i>keep-last=N</i> (keep last N backups), <i>keep-hourly=N</i>, <i>keep-daily=N</i>, etc.<br><br><b><b>--format</b> <i><tar|vma|raw></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output backup format.<br><i>vma</i>: Proxmox Virtual Machine Archive (default and recommended for KVM VMs).<br><i>tar</i>: Standard tar archive (often used for LXC containers).<br><i>raw</i>: Raw disk image.<br><br><b><b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress verbose output, showing only critical messages.<br><br><b><b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force backup even if issues are detected, such as a dirty snapshot state.<br><br>


title: DESCRIPTION
content:
<i>vzdump</i> is a powerful utility within the Proxmox Virtual Environment (PVE) designed for creating backups of virtual machines (KVM) and containers (LXC). It facilitates consistent and reliable snapshots of running guests, allowing for disaster recovery, migration, or archiving. Key features include live backup capabilities using LVM or ZFS snapshots, support for multiple backup formats (tar, vma, raw), and the ability to compress and encrypt backups. It can back up individual VMs/CTs or all of them simultaneously, storing them locally or on configured backup storages. This command is fundamental for maintaining data integrity and business continuity in a Proxmox cluster.


title: CAVEATS
content:
<i>vzdump</i> requires sufficient disk space on the target storage for the backup file. Live backups (snapshot mode) depend on the underlying storage technology (LVM, ZFS, or others with snapshot capabilities) supporting snapshots; otherwise, 'stop' or 'suspend' mode might be necessary, causing guest downtime. Backing up large VMs can be resource-intensive, potentially impacting performance on the Proxmox host during the process. Backups are specific to Proxmox VE and typically restored within the same environment using <i>qmrestore</i> or <i>pctrestore</i>. Permissions and Proxmox storage configurations must be correctly set up.


title: BACKUP STRATEGY CONSIDERATIONS
content:
When using <i>vzdump</i>, it's crucial to implement a robust backup strategy. This includes regularly testing restores to ensure backup integrity, storing backups off-site or on redundant storage, and leveraging the <i>--prune-backups</i> option for automatic retention management. Consider running backups during off-peak hours to minimize performance impact on production systems.


title: RESTORING BACKUPS
content:
While <i>vzdump</i> is used to create the backups, <i>qmrestore</i> and <i>pctrestore</i> are the respective commands used to restore KVM virtual machines and LXC containers from these backup archives. Ensure you have sufficient disk space and resources on the target node for successful restoration.


title: HISTORY
content:
<i>vzdump</i> is an integral part of the Proxmox Virtual Environment (PVE), an open-source server virtualization management solution based on Debian Linux. It has been a core component since the early versions of Proxmox VE, evolving alongside its storage and virtualization technologies (KVM, LXC). Its development has focused on robust live backup capabilities, various storage backend integrations, and flexible retention policies, making it a critical tool for Proxmox administrators to ensure data safety and business continuity.


title: SEE ALSO
content:
qm(1): Proxmox KVM virtual machine manager., pct(1): Proxmox LXC container manager., pvesm(1): Proxmox storage management utility., qmrestore(1): Restore KVM VM backups created by <i>vzdump</i>., pctrestore(1): Restore LXC container backups created by <i>vzdump</i>., rsync(1): A fast, versatile file-copying and synchronization tool, useful for transferring <i>vzdump</i> archives., tar(1): The GNU version of the tar archiving utility, underlying one of <i>vzdump</i>'s formats.


title: SYNOPSIS
content:
<b>w</b> [<I>options</I>] [<I>user</I>]<br>or<br><b>w</b> [<I>-h</I>|<I>--no-header</I>] [<I>-u</I>|<I>--no-current</I>] [<I>-s</I>|<I>--short</I>] [<I>-f</I>|<I>--from</I>] [<I>-o</I>|<I>--old-style</I>] [<I>-i</I>|<I>--ip-addr</I>] [<I>-V</I>|<I>--version</I>] [<I>-e</I>|<I>--extra-args</I>] [<I>-c</I>|<I>--no-args</I>] [<I>user</I>]


title: PARAMETERS
content:
<b><b>-h</b>, <b>--no-header</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not print the header line that normally shows current time, uptime, number of users, and load averages.<br><br><b><b>-u</b>, <b>--no-current</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores the username when figuring out the current process and CPU times. This can be useful if the user field is busy or contains unusual characters.<br><br><b><b>-s</b>, <b>--short</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the short format, which omits the login time (LOGIN@), JCPU (Job CPU time), and PCPU (Process CPU time) columns.<br><br><b><b>-f</b>, <b>--from</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggles printing the 'from' (remote host) field. By default, this field is usually shown.<br><br><b><b>-o</b>, <b>--old-style</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses old-style output. This means it prints a blank in the idle column for idle times less than one minute, rather than '0s'.<br><br><b><b>-i</b>, <b>--ip-addr</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays IP addresses instead of hostnames for the 'from' field, which can be faster if DNS lookups are slow.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information for the <b>w</b> command and exits.<br><br><b><b>-e</b>, <b>--extra-args</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows process arguments. This is typically the default behavior, but the option is provided for compatibility with older versions or specific configurations that might hide arguments by default.<br><br><b><b>-c</b>, <b>--no-args</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides the command line arguments of processes in the 'WHAT' column, showing only the command name.<br><br><b><b>user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays information only for the specified username. If provided, the output will filter to show only sessions belonging to this user.<br><br>


title: DESCRIPTION
content:
The <b>w</b> command displays information about the users currently logged on to the system and what they are doing. It provides a quick snapshot of system activity. For each user, it typically shows their login name, the terminal they are using (TTY), the remote host they logged in from (FROM), their login time (LOGIN@), their idle time (IDLE), the CPU time used by all processes attached to their TTY (JCPU), the CPU time used by their current process (PCPU), and the command line of their current process (WHAT). This command is valuable for system administrators to monitor user activity, identify idle sessions, or pinpoint processes consuming system resources. It is part of the <I>procps</I> suite.


title: CAVEATS
content:
<ul><li>The CPU times (JCPU, PCPU) are cumulative and represent the time used by processes associated with the TTY or the current process, respectively. They are not real-time CPU usage and can be misleading for short-lived processes.</li><li>The 'WHAT' field might truncate long command lines, showing only a portion of the actual command.</li><li>The 'IDLE' time can be misleading for users running background processes or services that don't interact with the TTY, as they might appear idle but still be performing work.</li><li>The information presented by <b>w</b> relies on the <I>/proc</I> filesystem and <I>/var/run/utmp</I> (or equivalent) for user session data. If these sources are corrupted or inaccessible, the output may be incomplete or incorrect.</li></ul>


title: OUTPUT COLUMNS EXPLAINED
content:
The standard output of <b>w</b> includes several columns, each providing specific details:<br><b>USER</b>: The login name of the user.<br><b>TTY</b>: The terminal line the user is currently using.<br><b>FROM</b>: The hostname or IP address from which the user logged in.<br><b>LOGIN@</b>: The time when the user logged in to the system.<br><b>IDLE</b>: The time duration since the user last typed anything on their terminal, indicating inactivity.<br><b>JCPU</b>: <I>JCPU (Job CPU time)</I> is the cumulative CPU time used by all processes attached to the TTY, including background jobs.<br><b>PCPU</b>: <I>PCPU (Process CPU time)</I> is the CPU time used by the user's current process, which is displayed in the 'WHAT' column.<br><b>WHAT</b>: The command line of the current process the user is running.


title: HEADER INFORMATION
content:
The header line of the <b>w</b> command, which can be suppressed with <b>-h</b>, provides system-wide information:<br><b>Current time</b>: The precise current time on the system.<br><b>Uptime</b>: How long the system has been running since its last reboot.<br><b>Number of users</b>: The total count of users currently logged in.<br><b>Load averages</b>: The system load averages for the last 1, 5, and 15 minutes, indicating the average number of processes in the run queue or waiting for disk I/O.


title: HISTORY
content:
The <b>w</b> command has been a staple utility in Unix-like operating systems for decades, originating in early BSD systems. It was designed to provide a more detailed view of logged-in users compared to simpler commands like <I>who</I>, specifically by showing what processes users were running. Over time, its implementation on Linux evolved to leverage information from the <I>/proc</I> filesystem, allowing it to display running processes and their CPU usage more effectively. It is now typically part of the <I>procps</I> or <I>procps-ng</I> suite, which manages utilities for interacting with the <I>/proc</I> filesystem. Its core functionality of showing 'who is logged on and what they are doing' has remained consistent, making it a quick and essential diagnostic tool for system administrators.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--no-header</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not print the header line that normally appears at the top of the output.<br><br><b><b>-u</b>, <b>--no-current</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the updating of the current process and CPU times for each user. This can make the output slightly less verbose and faster to generate, useful for frequent execution in window manager environments.<br><br><b><b>-s</b>, <b>--short</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the short format. Does not print login time, JCPU, or PCPU times, resulting in a more compact display.<br><br><b><b>-f</b>, <b>--from</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggles printing the 'from' (remote host) field. This field is typically shown by default, so this option explicitly enables/disables it.<br><br><b><b>-o</b>, <b>--old-style</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints blank space for idle times less than one minute. This behavior mimics older versions of the command.<br><br><b><b>-i</b>, <b>--ip-addr</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display IP address instead of hostname for the 'from' field. This option is only effective if the 'from' field is enabled (e.g., with <b>-f</b>).<br><br><b><i>user</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information only for the specified user, filtering the output to display details exclusively for that user account.<br><br>


title: DESCRIPTION
content:
The <i><b>w</b></i> command displays information about the users currently logged on to the system, along with their active processes. It provides a quick snapshot of system activity by showing for each user: <br> - The username <br> - The terminal (TTY) they are using <br> - Their login time <br> - Idle time <br> - JCPU (time consumed by all processes attached to the TTY) <br> - PCPU (time consumed by the current process) <br> - The command line of their current process. <br> This utility is a core component of the <i>procps</i> (or <i>procps-ng</i>) suite, which provides various essential tools for monitoring and managing processes on Linux systems. It is invaluable for system administrators to quickly assess who is on the system, what they are doing, and identify potential resource hogs or idle sessions.


title: CAVEATS
content:
The <i>COMMAND</i> column may be truncated if the command line is very long, showing only the initial part of the process. <br> The accuracy of the <i>IDLE</i>, <i>JCPU</i>, and <i>PCPU</i> times can vary, as they depend on the system's ability to precisely track process activity and may not always reflect exact real-time usage for very short-lived processes or rapid application switching. <br> The <i>FROM</i> field (remote host) might not always be accurately resolved or displayed, especially if DNS resolution is slow or if the connection originates from a non-standard source. <br> The command relies on information from system files like <i>/var/run/utmp</i> (or <i>/var/log/wtmp</i> for historical data) and the <i>/proc</i> filesystem. If these files are corrupted or inaccessible due to permissions, the output may be incomplete or erroneous.


title: USAGE SCENARIOS
content:
<i><b>w</b></i> is frequently used to quickly: <br> - Identify who is logged into a multi-user system. <br> - Check if a specific user is active or idle. <br> - Detect unusual activity, such as unknown users or processes. <br> - Troubleshoot system performance by observing high CPU usage by a specific user's processes (PCPU/JCPU).


title: HISTORY
content:
The <i><b>w</b></i> command has a long and venerable history, dating back to early Unix systems. It has been a staple utility for system monitoring and is traditionally included in the <i>procps</i> (now often <i>procps-ng</i>) package on Linux distributions. This package provides a set of essential command-line tools for interacting with the Linux kernel's process information available via the <i>/proc</i> pseudo-filesystem, evolving over time to incorporate new kernel features and user requirements.


title: PARAMETERS
content:
<b><b>-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the formatted source of the URL or file to standard output, without interactive browsing.<br><br><b><b>-cols</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of columns (width) for rendering the page.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>w3m</i> version number and exits.<br><br><b><b>-no-proxy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the use of any configured HTTP/FTP proxy.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Squashes multiple spaces in the output into a single space.<br><br><b><b>-I</b> <i>encoding</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input character encoding of the document.<br><br><b><b>-O</b> <i>encoding</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output character encoding when dumping or saving a page.<br><br><b><b>-T</b> <i>type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the content type of the input (e.g., 'text/html', 'text/plain').<br><br><b><b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follows symbolic links when accessing local files.<br><br><b><b>-M</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces monochromatic display, useful for terminals without color support.<br><br><b><b>-B</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the browser with the 'back' command, useful for returning to previous pages from scripts.<br><br>


title: DESCRIPTION
content:
<i>w3m</i> is a free and open-source text-based web browser and pager. Unlike graphical browsers, <i>w3m</i> operates entirely within the terminal, making it incredibly lightweight and fast. It's an excellent tool for accessing web content in environments where a graphical interface isn't available, such as via SSH connections, or on systems with limited resources. <br><br>Despite its text-only nature, <i>w3m</i> is quite capable. It supports tables, frames, SSL, and can even display inline images (though often requires an external viewer configured). It provides basic navigation features like history, bookmarks, and text search within pages. <i>w3m</i> is particularly useful for scripting purposes, allowing users to quickly parse and extract information from web pages using its "dump" mode. Its efficiency and low resource footprint make it a staple for system administrators, developers, and anyone needing quick web access without the overhead of a full GUI browser.


title: CAVEATS
content:
While <i>w3m</i> is powerful for a text-based browser, it has inherent limitations compared to modern graphical browsers. It does not execute JavaScript, limiting its functionality on dynamic web pages. CSS support is minimal or non-existent, meaning page layouts might appear very basic or broken. Multimedia content like videos and complex animations are not supported. Its interaction is entirely keyboard-driven, which can have a learning curve for users accustomed to mouse navigation.


title: INTERACTIVE USAGE
content:
In interactive mode, <i>w3m</i> is primarily navigated using keyboard shortcuts. Common keys include: <b>Arrow keys</b> for scrolling, <b>Spacebar</b> for page down, <b>b</b> for page up, <b>Enter</b> to follow a link, <b>u</b> for URL input, <b>/</b> for search, <b>B</b> for back, <b>q</b> to quit. A comprehensive list of key bindings can be found by pressing <b>?</b> inside <i>w3m</i>.


title: CONFIGURATION
content:
<i>w3m</i>'s behavior can be customized through configuration files, typically located in <i>~/.w3m/</i>. These files include <i>config</i> for general settings, <i>keymap</i> for customizing key bindings, and <i>mouse</i> for mouse actions. Users can also define external viewers for different MIME types in the <i>mailcap</i> file.


title: HISTORY
content:
<i>w3m</i> was originally developed by Akinori Kimura and first publicly released around 1999. Its name is derived from "WWW wo Miru" which translates to "to see WWW" in Japanese. It quickly gained popularity as a lightweight and efficient alternative to other text-mode browsers like <i>Lynx</i>, especially due to its ability to render tables more accurately and its more modern feature set at the time. It continues to be maintained and is a standard utility on many Unix-like operating systems, valued for its utility in scripting and low-resource environments.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's help message and exit.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's version number and exit.<br><br><b>-a, --findall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Find all WAFs, do not exit on first match.<br><br><b>-r, --followredirects</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow HTTP redirects.<br><br><b>-t, --test=<WAFNAME></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Test for a specific WAF by its name.<br><br><b>-l, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all supported WAFs.<br><br><b>-p, --proxy=<PROXY_URL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an HTTP/SOCKS proxy. E.g., <br><i>http://127.0.0.1:8080</i><br><br><b>-i, --input=<FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read targets from a file, one URL per line.<br><br><b>-o, --output=<FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output results to a file.<br><br><b>-f, --format=<FORMAT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format: <i>json</i>, <i>xml</i>, <i>html</i>, or <i>text</i> (default is <i>text</i>).<br><br><b>-V, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output.<br><br><b>-d, --debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output for detailed information.<br><br><b>-s, --strict</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use strict mode, only return highly confident matches.<br><br><b>-c, --nocaching</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable caching of WAF rules.<br><br><b>-u, --ua=<USER_AGENT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom User-Agent string.<br><br><b>-H, --headers=<HEADER:VALUE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add custom HTTP headers. Can be used multiple times.<br><br>


title: DESCRIPTION
content:
<i>wafw00f</i> is an open-source tool designed to identify and fingerprint Web Application Firewalls (WAFs). It works by sending a series of both normal and deliberately malicious HTTP requests to a target web server. By analyzing the responses, including status codes, headers, and body content, <i>wafw00f</i> attempts to determine if a WAF is present, and if so, which vendor or product it belongs to. This makes it an invaluable asset for penetration testers, security researchers, and developers who need to understand and assess the security controls in place on a web application. It supports a wide range of known WAF products, employs both passive (response analysis) and active (payload-based) detection techniques, and offers features like proxy support, input from files, and various output formats for integration into other workflows.


title: CAVEATS
content:
While <i>wafw00f</i> is highly effective, it's not infallible. False positives or negatives can occur, especially with highly customized WAF rules, very new WAF products, or when facing advanced evasion techniques. Network conditions and server responsiveness can also affect accuracy. Users should always obtain proper authorization before scanning any target system, as unauthorized scanning may be illegal or violate terms of service.


title: DETECTION LOGIC
content:
<i>wafw00f</i> employs a two-pronged approach for WAF detection:<br><b>1. Passive Detection:</b> It analyzes the HTTP response headers and body content for patterns or specific strings indicative of known WAFs without sending malicious payloads.<br><b>2. Active Detection:</b> It sends a variety of malicious HTTP payloads (e.g., SQL injection, XSS) and observes how the WAF responds to these attempts, looking for characteristic block pages, redirect patterns, or specific error messages.


title: USAGE EXAMPLES
content:
<b>Scan a single URL:</b><br><i>wafw00f https://www.example.com</i><br><br><b>Scan a URL with verbose output and follow redirects:</b><br><i>wafw00f -r -V https://www.example.com</i><br><br><b>Scan multiple URLs from a file and output to JSON:</b><br><i>wafw00f -i urls.txt -f json -o results.json</i><br><br><b>Test for a specific WAF using a proxy:</b><br><i>wafw00f -t Cloudflare -p http://127.0.0.1:8080 https://www.example.com</i>


title: HISTORY
content:
<i>wafw00f</i> was initially developed by Sandeep Singh and has since been nurtured by a community of contributors, becoming a staple in the arsenal of security professionals. It is an open-source project, continuously updated to include detection for new WAF technologies and improve existing fingerprints. Its inclusion in popular security distributions like Kali Linux has cemented its status as a go-to tool for WAF identification.


title: PARAMETERS
content:
<b>-i <input_path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the path to the input image file or directory.</i><br><br><b>-o <output_path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the path for the output image file or directory.</i><br><br><b>-n <noise_level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the noise reduction level (0=none, 1=low, 2=medium, 3=high).</i><br><br><b>-s <scale_factor></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the upscale factor (1=no upscaling, 2, 3, or 4).</i><br><br><b>-t <tile_size></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Defines the tile size for GPU processing in pixels (e.g., 200, 400). Smaller values reduce VRAM usage but may increase processing time.</i><br><br><b>-g <gpu_id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the GPU device ID to use. Default is 0.</i><br><br><b>-j <jobs_per_gpu></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the number of parallel jobs (threads) for each GPU.</i><br><br><b>-m <model_path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the directory containing the AI models.</i><br><br><b>-f <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the output image format (e.g., png, webp, jpg).</i><br><br><b>-x</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables Test-Time Augmentation (TTA) mode for potentially higher quality but slower processing.</i><br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the help message.</i><br><br>


title: DESCRIPTION
content:
<i>waifu2x-ncnn-vulkan</i> is a high-performance command-line tool for intelligently upscaling images and reducing noise, particularly effective for anime-style art but also suitable for photographs. It leverages the waifu2x deep convolutional neural network algorithm, optimized with the ncnn inference framework, and accelerated by the Vulkan graphics API. This combination allows for significant speed improvements on compatible GPUs, making it a powerful choice for batch processing and high-resolution outputs. It intelligently fills in missing pixel data, resulting in sharper, more detailed images without the typical pixelation or blur associated with traditional scaling methods.


title: CAVEATS
content:
<b>VRAM Usage:</b> High <I>tile_size</I> values or large input images can consume significant GPU VRAM, potentially leading to out-of-memory errors on GPUs with limited memory. Adjust <I>tile_size</I> downwards if this occurs.<br><br><b>Performance:</b> While highly optimized, performance can vary greatly depending on GPU capabilities, driver versions, and image size/complexity. Using a dedicated GPU is highly recommended for practical speeds.<br><br><b>Model Specificity:</b> The underlying waifu2x models are primarily trained on anime and cartoon images. While they perform well on photos, the results may not always be as optimal compared to models specifically trained for photographic realism.


title: BATCH PROCESSING
content:
<I>waifu2x-ncnn-vulkan</I> natively supports processing entire directories. Simply specify an input directory with <I>-i</I> and an output directory with <I>-o</I>, and it will process all supported image files within the input directory, mirroring the structure in the output.


title: SUPPORTED FORMATS
content:
The command typically supports common image formats like PNG, JPG, and WebP for both input and output. For outputs, specific formats can be forced using the <I>-f</I> option.


title: HISTORY
content:
The <I>waifu2x</I> algorithm was initially developed in 2015 by nagadomi. <I>waifu2x-ncnn-vulkan</I> is a highly optimized port that came into existence around 2018-2019, specifically designed to leverage Tencent's ncnn framework for efficient neural network inference and the Vulkan API for cross-platform GPU acceleration. This combination significantly improved the speed and accessibility of waifu2x on various hardware, moving it from a CPU-bound or CUDA-exclusive solution to a more generalized and faster GPU-accelerated tool for Linux, Windows, and macOS.


title: PARAMETERS
content:
<b><i>PID</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more process IDs. The command waits for these specific background processes to complete. If a PID refers to a process not known to the current shell as a child, its behavior can be shell-dependent.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Bash 5.2+) Waits for a single job to complete and returns its exit status. Useful when you need to confirm at least one background process has finished.<br><br><b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Bash 5.2+) Waits for each <i>PID</i> specified to complete, then returns the exit status of the last one. If no <i>PID</i>s are given, it behaves like <b>wait</b> without options, waiting for all current background jobs.<br><br>


title: DESCRIPTION
content:
The <b>wait</b> command is a shell built-in that pauses the execution of the current shell script or interactive session until one or more specified background processes (jobs) have terminated. If no process IDs (PIDs) are provided, <b>wait</b> waits for all currently active background jobs launched from the current shell to complete. When a PID is specified, <b>wait</b> specifically waits for that process. It is commonly used in shell scripting to synchronize the execution flow, ensuring that necessary background tasks finish before subsequent commands are executed. The command's exit status is that of the last process waited for, or 127 if the PID does not exist or an invalid option/PID is given. This allows scripts to check the success or failure of background operations.


title: CAVEATS
content:
<ul><li><b>Shell Built-in</b>: <b>wait</b> is typically a shell built-in command (e.g., in Bash, Zsh, Dash) and not an external executable. Its behavior can vary slightly between different shells.</li><li><b>Job Control</b>: It primarily interacts with jobs launched from the current shell. It might not be able to wait for arbitrary PIDs unless they are child processes of the current shell or if the shell's job control system has a record of them.</li><li><b>Exit Status</b>: When multiple PIDs are given without <i>-f</i> (Bash 5.2+), the exit status returned is usually that of the last PID in the list that was waited for, or the last job that terminated if no PIDs are given.</li><li><b>Bash 5.2+ Options</b>: The <i>-n</i> and <i>-f</i> options are relatively new, introduced in Bash version 5.2. Scripts relying on these options might not be portable to older Bash versions or other shells.</li></ul>


title: RETURN VALUE
content:
The exit status of <b>wait</b> is the exit status of the last process for which it waited. If the process exited normally, this is its exit status. If the process terminated due to a signal, the exit status is 128 plus the signal number. If no PIDs are given and no jobs are active, or if an invalid PID is provided, the return status is typically 127.


title: BLOCKING BEHAVIOR
content:
<b>wait</b> is a blocking command. It will halt the script's execution until the specified conditions (processes terminating) are met. This is crucial for maintaining execution order in scripts involving parallel tasks.


title: HISTORY
content:
The <b>wait</b> command has been a fundamental part of Unix shells since their early development, providing essential job control capabilities. Its core function of waiting for child processes is inherent to how shells manage background tasks. While its basic functionality has remained consistent, specific options like <i>-n</i> and <i>-f</i> were later additions, particularly in more recent versions of Bash (e.g., Bash 5.2), to provide more granular control over waiting behavior, reflecting evolving scripting needs for concurrent process management.


title: SYNOPSIS
content:
<b>#include &lt;sys/types.h&gt;</b><br><b>#include &lt;sys/wait.h&gt;</b><br><br><b>pid_t waitpid(pid_t</b> <i>pid</i><b>, int *</b><i>status</i><b>, int</b> <i>options</i><b>);</b><br><br><i>waitpid</i> is a system call, not a shell command. It is invoked within C/C++ programs to manage child processes.


title: PARAMETERS
content:
<b>pid_t pid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the set of child processes to wait for.<br><b>&gt; 0</b>: Wait for the child with the process ID <i>pid</i>.<br><b>= 0</b>: Wait for any child process in the same process group as the caller.<br><b>= -1</b>: Wait for any child process.<br><b>&lt; -1</b>: Wait for any child process in the process group whose ID is equal to the absolute value of <i>pid</i>.<br><br><b>int *status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A pointer to an integer where the exit status of the child will be stored. This value can be interpreted using macros like <i>WIFEXITED</i>, <i>WEXITSTATUS</i>, etc. If <i>status</i> is <i>NULL</i>, the child's status is not returned.<br><br><b>int options</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A bit mask that modifies the behavior of <i>waitpid</i>. Multiple options can be combined using a bitwise OR (|).<br><b>WNOHANG</b>: Do not block; return immediately if no child has exited.<br><b>WUNTRACED</b>: Return for children that are stopped (e.g., by <i>SIGSTOP</i> or <i>SIGTSTP</i>).<br><b>WCONTINUED</b>: Return for children that have been continued by delivery of <i>SIGCONT</i>.<br><br>


title: DESCRIPTION
content:
<i>waitpid</i> is a system call that suspends the execution of the calling process until a child specified by <i>pid</i> changes state. A state change can be termination, being stopped by a signal, or being continued after being stopped. It provides more control than the simpler <i>wait(2)</i> system call, allowing the caller to specify which child process to wait for and whether to block or return immediately if no child has changed state. <br><br>When a child process terminates, it becomes a "zombie" process. <i>waitpid</i> reaps these zombies, releasing their resources back to the system. The <i>status</i> argument, if not <i>NULL</i>, is used to store information about the child's state change, which can then be interpreted using a set of macros like <i>WIFEXITED</i>, <i>WEXITSTATUS</i>, etc. The <i>options</i> argument modifies the behavior of <i>waitpid</i>, for example, preventing it from blocking (<i>WNOHANG</i>) or allowing it to return for stopped or continued children.


title: CAVEATS
content:
<i>waitpid</i> is a system call, which means it's a function used within programming languages (primarily C/C++), not a command directly executed in a shell.<br><br>Misinterpreting the <i>status</i> value without using the provided macros (e.g., <i>WIFEXITED</i>) can lead to incorrect logic. <br><br>If a child process is not waited for (i.e., its parent does not call <i>waitpid</i> or <i>wait</i>), it becomes a 'zombie' process, consuming a small amount of system resources until its parent terminates or it is explicitly reaped by another process (e.g., <i>init</i> if the parent exits).


title: RETURN VALUE
content:
On success, <i>waitpid</i> returns the process ID of the child whose state has changed. If <i>WNOHANG</i> was specified and no child has changed state, it returns 0. On error, it returns -1, and <i>errno</i> is set to indicate the error.


title: ERRORS
content:
Common errors include:<br><b>ECHILD</b>: No child (or process specified by <i>pid</i>) exists or could be found, or the <i>pid</i> refers to a child that has already been waited for.<br><b>EINTR</b>: The call was interrupted by a signal. <br><b>EINVAL</b>: An invalid value was provided for <i>options</i>.


title: STATUS MACROS
content:
To interpret the integer value returned in <i>status</i>, a set of macros should be used:<br><b>WIFEXITED(status)</b>: True if the child exited normally.<br><b>WEXITSTATUS(status)</b>: Returns the exit status of the child (only if <i>WIFEXITED</i> is true).<br><b>WIFSIGNALED(status)</b>: True if the child terminated because of a signal.<br><b>WTERMSIG(status)</b>: Returns the signal number that caused the child to terminate (only if <i>WIFSIGNALED</i> is true).<br><b>WIFSTOPPED(status)</b>: True if the child was stopped by delivery of a signal.<br><b>WSTOPSIG(status)</b>: Returns the signal number that caused the child to stop (only if <i>WIFSTOPPED</i> is true).<br><b>WIFCONTINUED(status)</b>: True if the child was continued by delivery of <i>SIGCONT</i> (only if <i>WCONTINUED</i> option was set).


title: HISTORY
content:
The <i>waitpid</i> system call was introduced to provide more granular control over process waiting compared to the original <i>wait(2)</i> system call. While <i>wait(2)</i> waits for any child process, <i>waitpid</i> allows specifying a particular child or a group of children, as well as non-blocking options. This enhanced functionality became crucial for more complex process management scenarios, especially in multi-process server applications and shell implementations. It is a fundamental part of the POSIX standard, ensuring its widespread availability and consistent behavior across various Unix-like operating systems.


title: PARAMETERS
content:
<b>MODULE:APPLICATION</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Python module and the WSGI application object within it (e.g., <I>myproject.wsgi:application</I>).<br><br><b>--call MODULE:CALLABLE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invokes a Python callable (function or method) within the specified module, which is expected to return the WSGI application object.<br><br><b>--host HOST</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. The hostname or IP address the server should listen on. Defaults to <I>0.0.0.0</I> (all available interfaces).<br><br><b>--port PORT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. The TCP port the server should listen on. Defaults to <I>8080</I>.<br><br><b>--unix-socket PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Specifies a path to a Unix domain socket for listening, instead of TCP host/port.<br><br><b>--threads COUNT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. The number of threads <I>Waitress</I> will use to handle requests. Defaults to <I>4</I>.<br><br><b>--url-prefix PREFIX</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. A URL prefix to prepend to the application's paths. Useful when serving the app under a subpath.<br><br><b>--ident IDENT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. A string to use for server identification in HTTP headers (e.g., <I>Server: Waitress-ident</I>).<br><br><b>--recv-bytes COUNT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Maximum number of bytes to receive in one go.<br><br><b>--send-bytes COUNT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Maximum number of bytes to send in one go.<br><br><b>--trusted-proxy IP_ADDRESSES</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Comma-separated list of trusted proxy IP addresses.<br><br><b>--trusted-proxy-headers HEADERS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Comma-separated list of headers to trust from trusted proxies (e.g., <I>X-Forwarded-For</I>).<br><br><b>--log-file PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Path to a file for logging.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <I>Waitress</I> version and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and exits.<br><br>


title: DESCRIPTION
content:
waitress-serve is the command-line utility for <I>Waitress</I>, a production-quality, pure-Python Web Server Gateway Interface (WSGI) server. It's designed to be simple, fast, and robust, providing a reliable way to serve Python web applications. Unlike complex servers, <I>Waitress</I> focuses solely on the WSGI protocol, making it ideal for microservices and small to medium-sized applications. It's written entirely in Python, has no external dependencies, and is cross-platform. Developers use <I>waitress-serve</I> to launch their WSGI-compatible applications, specifying the Python module and application object to be served, along with configuration options like host, port, and thread count. While capable of standalone operation, it's frequently deployed behind a reverse proxy like <I>Nginx</I> or <I>Apache</I> for enhanced security, load balancing, and static file serving.


title: CAVEATS
content:
<B>Installation Required</B>: <I>waitress-serve</I> is not a standard Linux command. It requires Python to be installed, and the <I>Waitress</I> package must be installed via <I>pip</I> (e.g., <I>pip install waitress</I>).<br><B>WSGI Focus</B>: It is designed exclusively for serving WSGI applications and does not directly handle static files or act as a reverse proxy. For production environments, it's highly recommended to use a dedicated web server like <I>Nginx</I> or <I>Apache</I> in front of <I>Waitress</I> for static file serving, SSL termination, and advanced routing.<br><B>Single Process</B>: By default, <I>Waitress</I> runs as a single process with multiple threads. For higher concurrency or fault tolerance, consider using process managers or multiple <I>Waitress</I> instances with a load balancer.


title: DEPLOYMENT BEST PRACTICES
content:
For production deployments, it's strongly advised to place <I>waitress-serve</I> behind a reverse proxy (e.g., <I>Nginx</I>, <I>Apache</I>). The proxy can handle SSL termination, serve static assets directly (which <I>Waitress</I> is not optimized for), manage rate limiting, and provide load balancing across multiple <I>Waitress</I> instances.


title: CONFIGURATION FILES
content:
While <I>waitress-serve</I> can be fully configured via command-line options, it can also integrate with PasteDeploy configuration files (often <I>paste.ini</I> or <I>development.ini</I>). This allows for more complex, environment-specific configurations to be managed outside the command line.


title: HISTORY
content:
<I>Waitress</I> was developed by the <I>Pylons Project</I> as a simple, high-quality, and robust WSGI server written entirely in Python. Its development was driven by the need for a pure-Python server that was easy to deploy and had minimal external dependencies, making it an attractive option for projects that prefer to avoid complex build requirements or system-specific binaries. Since its inception, it has gained popularity for its reliability and ease of use, particularly in environments where a lightweight, production-ready WSGI server is needed without the overhead of larger, feature-rich alternatives. It continues to be actively maintained and is a staple in many Python web application deployments.


title: SYNOPSIS
content:
<b>wajig</b> [<i>global_options</i>] <i>command</i> [<i>package(s)</i>|<i>arguments</i>]<br><br>This represents <i>wajig</i>'s structure: it takes optional global flags, followed by a specific subcommand (like <b>install</b>, <b>search</b>, <b>update</b>), and then arguments relevant to that subcommand (e.g., package names).


title: PARAMETERS
content:
<b><b>install</b> <i>package(s)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs one or more new packages.<br><br><b><b>remove</b> <i>package(s)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes specified packages, leaving configuration files.<br><br><b><b>purge</b> <i>package(s)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes specified packages along with their configuration files.<br><br><b><b>update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates the list of available packages from repositories.<br><br><b><b>upgrade</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrades all installed packages to their latest versions.<br><br><b><b>dist-upgrade</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a distribution upgrade, intelligently handling dependencies.<br><br><b><b>search</b> <i>keyword(s)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for packages matching the given keywords.<br><br><b><b>show</b> <i>package(s)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about specified packages.<br><br><b><b>list</b> [<i>options</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists installed, available, or upgradable packages.<br><br><b><b>clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears the local repository of retrieved package files.<br><br><b><b>auto-remove</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes packages that were automatically installed and are no longer needed.<br><br><b><b>fix-broken</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to correct a system with broken dependencies.<br><br><b><b>commands</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive list of all available <i>wajig</i> commands.<br><br><b><b>help</b> [<i>command</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides help on <i>wajig</i> itself or a specific subcommand.<br><br>


title: DESCRIPTION
content:
<i>wajig</i> is a versatile and user-friendly command-line tool designed to simplify package management on Debian-based Linux systems like Ubuntu. It acts as a unified front-end for various underlying package tools such as <i>apt-get</i>, <i>apt-cache</i>, <i>dpkg</i>, and <i>aptitude</i>, allowing users to perform common package operations with a single, consistent command syntax. This eliminates the need to remember which specific tool or option is required for a particular task, making it especially beneficial for new Linux users or those who prefer a streamlined workflow. <i>wajig</i> aims to provide an intuitive interface, consolidating actions like installing, removing, searching, updating, and cleaning packages under one roof, thereby enhancing usability and reducing complexity in system administration tasks.


title: CAVEATS
content:
While <i>wajig</i> simplifies package management, it introduces a slight overhead as it acts as a wrapper, potentially making operations marginally slower than directly using the underlying <i>apt</i> or <i>dpkg</i> commands. For advanced users requiring very specific options or fine-grained control, resorting to the native tools might still be necessary as <i>wajig</i> doesn't expose every single nuance of the wrapped commands. Additionally, <i>wajig</i> itself is not always pre-installed on all Debian-based systems and might need to be installed first.


title: INTERACTIVE MODE
content:
<i>wajig</i> can be run in an interactive mode by simply typing <b>wajig</b> without any arguments. This provides a menu-driven interface, allowing users to select actions without memorizing commands, further enhancing its user-friendliness.


title: SUDO INTEGRATION
content:
<i>wajig</i> intelligently determines when <i>root</i> privileges are required for a command and will automatically prompt for <i>sudo</i> if necessary, streamlining the execution of administrative tasks without requiring the user to manually prepend <b>sudo</b> to every command.


title: HISTORY
content:
<i>wajig</i> was created by Andrew C. Durdin with the primary goal of making Debian/Ubuntu package management more accessible and less intimidating for new users. Its development focused on consolidating disparate commands into a single, logical interface, reducing the learning curve associated with managing packages via multiple tools like <i>apt-get</i>, <i>dpkg</i>, and <i>aptitude</i>. It has been a useful utility for many users seeking a consistent and simplified approach to system administration on Debian-derived distributions.


title: SYNOPSIS
content:
<b>wakeonlan</b> [<i>options</i>] <i>&lt;MAC_ADDRESS(es)&gt;</i><br>or<br><b>wakeonlan</b> -f <i>&lt;FILE&gt;</i> [<i>options</i>]


title: PARAMETERS
content:
<b><i>&lt;MAC_ADDRESS(es)&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more target MAC addresses (e.g., 00:11:22:33:44:55 or 00-11-22-33-44-55). Multiple addresses can be specified on the command line.<br><br><b>-i <i>&lt;IP_ADDRESS&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the broadcast IP address to send the Magic Packet to. This is useful for waking machines across subnets (with router support).<br><br><b>-p <i>&lt;PORT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the UDP port number to send the Magic Packet on. The default and standard port for WoL is 9 (discard) or 7 (echo).<br><br><b>-f <i>&lt;FILE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads MAC addresses from the specified file, one MAC address per line. Comments starting with '#' are ignored.<br><br><b>-b</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the limited broadcast address (255.255.255.255) for sending the Magic Packet.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing more detailed information about the packet being sent.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing the MAC address and broadcast IP being used.<br><br>


title: DESCRIPTION
content:
<b>wakeonlan</b> is a utility used to send a special "Magic Packet" over a network to wake up a computer that is in a low-power state (e.g., suspended, hibernating, or powered off) but still connected to a power source and network. This functionality, known as Wake-on-LAN (WoL), requires support from both the network interface card (NIC) and the motherboard's BIOS/UEFI settings on the target machine.<br><br>The Magic Packet typically contains the target machine's MAC address repeated multiple times, which the NIC listens for even when the system is mostly off. Upon receiving a correctly formatted packet, the NIC can trigger a power-on event for the system. It's commonly used for remote administration, scheduled maintenance, or accessing files on a remote machine without physically being there to power it on. It operates at the data link layer (Layer 2) of the OSI model, making it independent of IP addresses for the target machine itself, though the packet delivery often relies on broadcast or directed broadcast IP addresses.


title: CAVEATS
content:
<ul><li>Wake-on-LAN must be enabled in the target computer's BIOS/UEFI settings and potentially in the network adapter's driver settings.</li><li>The target computer's network card must support WoL and remain powered (often indicated by a lit link light even when off).</li><li>Routers and firewalls might block broadcast traffic or require specific configuration (e.g., ARP binding, port forwarding) for WoL to work across subnets.</li><li>Some network adapters may lose WoL capability after a full power cycle (unplugging the power cable).</li></ul>


title: MAGIC PACKET STRUCTURE
content:
The Magic Packet is a broadcast frame containing 6 bytes of all FFh (FF FF FF FF FF FFh), followed by 16 repetitions of the 6-byte target MAC address. This specific pattern allows the NIC to easily detect and act upon it.


title: HARDWARE REQUIREMENTS
content:
For Wake-on-LAN to function, the network card must be WoL-capable and receive auxiliary power even when the system is off. The motherboard must also support it and typically has a setting in the BIOS/UEFI (often labeled "Wake on LAN", "PCIe/PME Wakeup", or similar) that needs to be enabled.


title: HISTORY
content:
Wake-on-LAN (WoL) technology was first introduced by IBM and Intel in 1997. While the underlying WoL standard has been around for decades, the <b>wakeonlan</b> command-line utility itself is a common implementation available on various Unix-like systems. It provides a straightforward way to send the standardized Magic Packet without needing complex network programming. Its development typically follows the broader adoption of WoL in hardware and the need for simple tools for remote system management. It's often found in distributions' repositories as a small, dedicated utility.


title: PARAMETERS
content:
<b><b>-i</b>, <b>--image</b> <i>/path/to/image.jpg</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the input image path from which to generate the colorscheme.<br><br><b><b>-s</b>, <b>--store</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Store the generated colorscheme for later use. This makes it the default on subsequent runs without specifying an image.<br><br><b><b>-t</b>, <b>--theme</b> <i>theme_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a predefined theme instead of generating one from an image. Themes are typically located in <i>~/.config/wal/themes/</i>.<br><br><b><b>-e</b>, <b>--external</b> <i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute an external command after the colorscheme has been applied. This is useful for triggering reloads in applications that need it.<br><br><b><b>-r</b>, <b>--reload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reload the current colorscheme without regenerating it from an image. Useful if you've manually edited the cache files.<br><br><b><b>--backend</b> <i>backend_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the color extraction backend to use (e.g., <i>wal</i>, <i>colorz</i>, <i>dominant</i>, <i>haishoku</i>). Each may produce slightly different results.<br><br><b><b>--saturate</b> <i>value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase the saturation of the generated colors. A value like <i>0.8</i> or <i>1.2</i> can be used for desaturation or oversaturation, respectively.<br><br><b><b>--light</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a light colorscheme instead of the default dark one.<br><br><b><b>--alpha</b> <i>value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the transparency level for terminal colors. Expects a value between <i>0</i> (fully transparent) and <i>100</i> (fully opaque).<br><br><b><b>--vte</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update VTE-based terminals (like Gnome Terminal, Tilix) by trying to apply the colorscheme directly. This often requires the VTE patch.<br><br><b><b>--preview</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a preview of the generated colorscheme in the terminal without applying it system-wide.<br><br><b><b>--config</b> <i>/path/to/config_dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration directory for <i>pywal</i> instead of the default <i>~/.config/wal/</i>.<br><br><b><b>--clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove all generated colorscheme files from the cache directory (<i>~/.cache/wal/</i>).<br><br><b><b>--iterative</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continuously update the colorscheme whenever the input image changes. Requires a tool like <i>inotifywait</i>.<br><br>


title: DESCRIPTION
content:
<b>wal</b>, commonly known as <i>pywal</i>, is a powerful Python-based command-line tool that automatically generates a vibrant color palette from your desktop background image. It then applies this colorscheme system-wide to various applications, including terminal emulators, text editors, and other UI elements, providing a consistent and aesthetically pleasing visual experience. <i>pywal</i> achieves this by generating configuration files for programs like Xresources, GTK, Qt, and various terminal emulators, ensuring your desktop environment harmonizes with your chosen wallpaper. It's widely used by customization enthusiasts to achieve a highly personalized and dynamic desktop appearance, eliminating the need for manual color configuration.


title: CAVEATS
content:
<i>pywal</i> requires Python 3 and its dependencies to be installed. It primarily affects Xorg-based desktop environments and may require specific terminal emulators (e.g., Kitty, Alacritty, iTerm2, or VTE-based terminals with <i>wal</i>'s VTE patch) and application configurations to fully integrate. Not all applications support dynamic theme changes without manual configuration or specific <i>pywal</i> integration scripts. Some applications might need to be restarted to pick up the new colorscheme.


title: CONFIGURATION FILES
content:
<i>pywal</i> typically generates configuration files in <i>~/.cache/wal/</i>. These include <i>colors</i> (raw color values), <i>colors.json</i> (JSON representation), and theme files for various applications like <i>colors-kitty.conf</i>, <i>colors-alacritty.yml</i>, <i>colors-xresources</i>, <i>colors-waybar.css</i>, etc. These files are then sourced or applied by the respective applications to update their appearance.


title: INTEGRATION WITH SHELL
content:
For the colorscheme to be applied to your shell prompt and terminal, <i>pywal</i> often instructs users to add a line like <i>(cat ~/.cache/wal/colors.sh)</i> or <i>source ~/.cache/wal/colors.sh</i> to their shell's configuration file (e.g., <i>.bashrc</i>, <i>.zshrc</i>, <i>.config/fish/config.fish</i>). This script sets environment variables and Xresources based on the generated theme, ensuring your terminal's colors match your wallpaper.


title: HISTORY
content:
<i>pywal</i> emerged from the desire to automatically theme the desktop based on the wallpaper, simplifying the process of creating a cohesive visual style. It gained significant popularity within the Linux customization community, particularly among users of tiling window managers and those who share their configurations on platforms like Reddit's <i>r/unixporn</i>, due to its ability to create dynamic and consistent themes with minimal effort. Its development has been driven by community contributions, adding support for a wide array of applications and improving color extraction accuracy.


title: SEE ALSO
content:
feh(1): Lightweight image viewer, commonly used for setting wallpapers which <i>pywal</i> can then process., nitrogen(1): A wallpaper browser and setter, another common tool in wallpaper management with <i>pywal</i>., xrdb(1): X resource database utility, often used by <i>pywal</i> to set X colors for older applications and environments., dunst(1): A highly customizable notification daemon, often configured by <i>pywal</i> to match the system theme., kitty(1): A fast, feature-rich, GPU-based terminal emulator, one of the most popular choices for direct <i>pywal</i> integration., alacritty(1): A GPU-accelerated terminal emulator, another modern terminal often paired with <i>pywal</i>.


title: PARAMETERS
content:
<b>No explicit arguments</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When run without arguments, the script typically sends the currently active <I>pywal</I> generated wallpaper image or a textual representation of the color scheme to the configured Telegram chat. The default behavior is implementation-dependent.<br><br><b><b>-m</b> <I>message</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows sending a custom text message along with, or instead of, the default wallpaper/color scheme information. The exact behavior (e.g., whether it replaces or accompanies the image/colors) depends on the script's implementation.<br><br><b><b>-f</b> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular file (e.g., an image file or a text file containing color details) to be sent to Telegram, overriding the default behavior of sending the current <I>pywal</I> output. Not all <I>wal-telegram</I> scripts support this option.<br><br>


title: DESCRIPTION
content:
The <I>wal-telegram</I> command refers to a community-contributed or user-created script designed to integrate the <I>pywal</I> utility with Telegram.<br>Its primary purpose is to automatically send the currently active <I>pywal</I> generated color scheme, often in the form of a generated wallpaper image or a text representation of the color palette, to a specified Telegram chat or channel. This allows users to easily share their dynamic desktop themes, sync color schemes across devices, or simply archive their daily wallpaper changes.<br>Unlike standard Linux commands, <I>wal-telegram</I> is not typically part of a distribution's core packages but is rather a custom script built upon existing tools. It usually leverages <I>pywal</I>'s ability to generate colors from an image and a Telegram API wrapper like <I>telegram-send</I> or a custom <I>curl</I>-based solution to transmit the data. Its specific functionality and command-line options can vary significantly depending on the script's implementation by its author. Users generally configure it with a Telegram bot token and chat ID for authentication and delivery.


title: CAVEATS
content:
The <I>wal-telegram</I> command is not a standard Linux utility but rather a custom script, often found in community repositories or user-created configurations. Its availability, exact functionality, and command-line options are entirely dependent on the specific implementation provided by its author.<br>It requires <I>pywal</I> to be installed and correctly configured. Furthermore, it necessitates a Telegram bot token and a chat ID for operation, which must be securely stored and managed (e.g., via <I>telegram-send</I>'s configuration or environment variables) to prevent unauthorized access to your Telegram bot.


title: CONFIGURATION
content:
To use <I>wal-telegram</I>, you typically need to set up a Telegram bot and obtain its API token and your chat ID. Tools like <I>telegram-send</I> provide an easy way to configure these credentials, which <I>wal-telegram</I> scripts often rely on. Ensure these tokens are kept secure and not hardcoded directly into publicly accessible scripts.


title: TYPICAL USAGE
content:
Users commonly integrate <I>wal-telegram</I> into their workflow by calling it after <I>pywal</I> has finished generating and applying a new color scheme. This can be achieved by adding the <I>wal-telegram</I> command to <I>pywal</I>'s post-processing hooks (e.g., via <I>~/.config/wal/colors-wal.sh</I> or similar configuration files). Alternatively, it can be run manually to send the current setup on demand.


title: HISTORY
content:
The concept of <I>wal-telegram</I> emerged organically within the <I>pywal</I> user community. As <I>pywal</I> (developed by Dylan Araps) gained popularity in the mid-to-late 2010s for its ability to dynamically generate color schemes from images, users naturally sought ways to share their unique desktop setups.<br>Scripts integrating <I>pywal</I>'s output with messaging platforms like Telegram became common custom additions to users' dotfiles and post-<I>pywal</I> hooks. There is no single canonical <I>wal-telegram</I> project; rather, it represents a category of scripts fulfilling this specific integration need, often leveraging <I>telegram-send</I> as a backend.


title: PARAMETERS
content:
<b><b>-n</b>, <b>--nobanner</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress the standard banner information (username, tty, time) that usually precedes the message.<br><br><b><b>-t</b> <I>seconds</I>, <b>--timeout</b> <I>seconds</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a timeout in seconds for writing to each user's terminal. This prevents <b>wall</b> from hanging indefinitely if a terminal is unresponsive.<br><br><b><b>-g</b> <I>group</I>, <b>--group</b> <I>group</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restrict the broadcast message only to users who are logged in and belong to the specified system <I>group</I>.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output version information and exit.<br><br><b><I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the message to be broadcast from the specified <I>file</I>. If omitted, <b>wall</b> reads from standard input.<br><br>


title: DESCRIPTION
content:
The <b>wall</b> (write all) command sends a message to every user currently logged into the system. It reads the message from standard input until an End-Of-File (typically <b>Ctrl+D</b>) is encountered, or from a specified file. This command is primarily used by system administrators for broadcasting important announcements, such as system shutdowns, urgent warnings, or general information to all active users. Messages appear directly on the users' terminal screens, interrupting whatever they are doing. Due to its intrusive nature, it requires appropriate permissions, usually root privileges, to be effective across all user terminals, especially if users have disabled message reception using the <b>mesg n</b> command.


title: CAVEATS
content:
Messages sent by <b>wall</b> are broadcast to <i>all</i> logged-in users, including those on virtual consoles or graphical terminal emulators. Exercise caution and consider the privacy implications when sending messages. The command often requires root privileges or appropriate group membership (e.g., 'tty') to override user <b>mesg n</b> settings. Messages might be truncated if they are excessively long or if the receiving terminal has limitations.<br><br>While <b>wall</b> is effective for broadcasting to active terminal sessions, it will not reach users who are only connected via non-interactive sessions (e.g., SSH without a PTY, or GUI users without an open terminal window).


title: MESSAGE RECEPTION CONTROL
content:
Users can control whether they receive messages from commands like <b>wall</b> and <b>write</b> by using the <b>mesg</b> command. <b>mesg n</b> disables message reception, while <b>mesg y</b> enables it. However, <b>wall</b>, when run by the superuser (root) or with appropriate permissions (e.g., SUID root), can bypass this setting for critical system broadcasts.


title: PERMISSIONS
content:
To send messages to all terminals, including those where <b>mesg n</b> is set, <b>wall</b> typically needs to be executed with root privileges or be installed as a SUID (Set User ID) root executable. This ensures that critical system announcements can always reach users regardless of their personal message reception settings.


title: HISTORY
content:
The <b>wall</b> command has been a fundamental utility in Unix-like operating systems for decades, tracing its roots back to early Unix versions. It serves as a simple yet powerful tool for system administrators to communicate instantly with all active users. Its functionality is often integrated into system shutdown and reboot procedures to notify users of impending system state changes, making it a critical component of system management and user communication on multi-user systems.


title: SYNOPSIS
content:
<b>wallpaper</b> [<I>options</I>] [<I>file</I> | <I>directory</I>]<br><b>wallpaper</b> <I>--set-color</I> <I>#RRGGBB</I><br><b>wallpaper</b> <I>--clear</I><br><b>wallpaper</b> <I>--list</I>


title: PARAMETERS
content:
<b>--set <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a specific image file as the wallpaper.<br><br><b>--set-random <directory></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Choose a random image from the specified directory and set it as wallpaper.<br><br><b>--set-color <#RRGGBB></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a solid background color using a hexadecimal RGB value.<br><br><b>--clear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clear the current wallpaper, often reverting to a default or solid color.<br><br><b>--mode <mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the display mode for the image. Common modes include <i>fill</i>, <i>stretch</i>, <i>center</i>, <i>tile</i>, <i>zoom</i>.<br><br><b>--list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display information about the currently set wallpaper.<br><br><b>--monitor <id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the monitor to set the wallpaper on (e.g., 0 for primary).<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
The <b>wallpaper</b> command provides a unified command-line interface for setting, managing, and querying desktop wallpapers across various Linux desktop environments. While many environments have their own specific tools (like <i>gsettings</i> for GNOME or <i>xfconf-query</i> for XFCE), this conceptual <b>wallpaper</b> utility aims to abstract these differences, offering a consistent way to control the desktop background. It supports setting static image files, selecting images from a directory, applying solid colors, and configuring display modes such as fill, stretch, center, or tile. Users can also use it to retrieve information about the currently set wallpaper. Designed for scripting and quick changes, <b>wallpaper</b> simplifies the process of customizing your desktop appearance without needing to navigate graphical settings.


title: CAVEATS
content:
It is important to note that a single, universal <b>wallpaper</b> command is <I>not</I> standard across all Linux distributions and desktop environments. This description represents a conceptual utility that abstracts the various environment-specific methods.<br><br>In practice, users typically rely on:<br><i><b>Desktop Environment Specific Tools:</b></i> GNOME uses <i>gsettings</i> or <i>gnome-control-center</i>, KDE uses <i>qdbus</i> or <i>kde-plasma-desktop-settings</i>, XFCE uses <i>xfconf-query</i>, LXDE uses <i>pcmanfm --set-wallpaper</i>.<br><i><b>Standalone Utilities:</b></i> Tools like <i>feh</i> (<i>feh --bg-fill image.jpg</i>) or <i>nitrogen</i> are popular for lightweight window managers (e.g., Openbox, i3, AwesomeWM).<br><br>Therefore, if you try to execute <b>wallpaper</b> directly, it will likely result in a 'command not found' error unless you have installed a specific third-party utility or a custom script named <b>wallpaper</b>.


title: CONFIGURATION FILES
content:
Many desktop environments and wallpaper setters save their configurations in specific files (e.g., DConf for GNOME, <i>~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml</i> for XFCE). Direct manipulation of these files is generally not recommended as it can lead to inconsistencies.


title: DISPLAY SERVERS
content:
The underlying mechanism for displaying wallpapers depends on the display server in use (X11 or Wayland). Tools like <i>feh</i> primarily interact with X11, while Wayland compositors often handle backgrounds differently, requiring compositor-specific tools or protocols.


title: HISTORY
content:
As a universal command, <b>wallpaper</b> does not have a single, unified development history. Instead, the functionality it represents has evolved within individual desktop environments and through the development of various standalone utilities designed to manage background images. Early desktop environments provided graphical tools, and later, command-line interfaces emerged as part of their configuration systems (e.g., <i>gsettings</i> becoming the standard for GNOME3+). Dedicated wallpaper utilities like <i>feh</i> and <i>nitrogen</i> gained popularity in the early 2000s for their flexibility and minimal dependencies, catering to users of more lightweight window managers. The desire for a consistent CLI approach continues to inspire community-driven scripts and custom solutions, but no single standard <b>wallpaper</b> command has been universally adopted.


title: SYNOPSIS
content:
<i>No standard synopsis available. The command <b>'wami'</b> is not a recognized core Linux utility.</i>


title: DESCRIPTION
content:
The command <b>'wami'</b> is <i>not a recognized or standard utility</i> in mainstream Linux distributions like Debian, Ubuntu, Fedora, or Red Hat. It does not appear in the standard manual pages (man pages) or common command-line toolsets.<br><br>It is highly probable that <b>'wami'</b> refers to one of the following:<br><br>1. A <i>typo</i> for another common command (e.g., 'w', 'whoami', 'wait', 'wc', 'whatis').<br>2. A <i>custom script or alias</i> created by a user or system administrator on a specific machine for a particular task.<br>3. A command part of a <i>very specialized or niche application or framework</i> that is not widely distributed or documented as a general Linux utility.<br>4. An executable or script installed as part of a proprietary or internal system.<br><br>Without further context from the specific system where it might be encountered, it is impossible to provide specific details regarding its syntax, options, or functionality, as it is not part of the core Linux command set.


title: CAVEATS
content:
As <b>'wami'</b> is not a standard Linux command, attempting to execute it on a typical Linux system will almost certainly result in a <i>'command not found'</i> error. Its existence and functionality would be entirely dependent on a custom setup, a specific application installed, or a user-defined alias on a given machine. Therefore, its behavior is not portable or universally predictable.


title: HOW TO VERIFY ON YOUR SYSTEM
content:
If you encounter <b>'wami'</b> on a specific system and wish to understand its origin, you can try the following commands:<br><br>1. <b><code>which wami</code></b>: This command attempts to locate the executable in your PATH.<br>2. <b><code>type wami</code></b>: This command tells you if <b>'wami'</b> is an alias, function, or executable.<br>3. <b><code>apropos wami</code></b> or <b><code>man -k wami</code></b>: These commands search the manual page descriptions for keywords, but are unlikely to return results for a non-standard command.<br><br>If <b><code>which</code></b> or <b><code>type</code></b> return a path, inspecting the content of the file at that path (if it's a script) or checking the documentation of the application it belongs to would be the next step.


title: HISTORY
content:
<i>There is no known history or development timeline for <b>'wami'</b> as a general-purpose Linux command, precisely because it is not a standard, officially maintained, or widely distributed component of the Linux operating system. Any instance of 'wami' would represent a localized or application-specific implementation.</i>


title: SYNOPSIS
content:
<b>wapm</b> <I>command</I> [<I>options</I>] [<I>arguments</I>]<br>Examples:<br><b>wapm</b> <I>install</I> <I>package-name</I>[<I>@version</I>]<br><b>wapm</b> <I>run</I> <I>package-name</I>[<I>@version</I>] [<I>args...</I>]<br><b>wapm</b> <I>publish</I> [<I>path</I>]


title: PARAMETERS
content:
<b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a WebAssembly package from the WAPM registry.<br><br><b>publish</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Publishes a WebAssembly package to the WAPM registry.<br><br><b>run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a WebAssembly package or a local Wasm file.<br><br><b>search</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches the WAPM registry for available packages.<br><br><b>login</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Authenticates the user with the WAPM registry.<br><br><b>whoami</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the currently logged-in WAPM user.<br><br><b>pack</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a <i>.wapm</i> package from a directory.<br><br><b>help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help for the <b>wapm</b> command or its subcommands.<br><br>


title: DESCRIPTION
content:
<b>wapm</b> is the WebAssembly Package Manager, a command-line interface (CLI) tool designed for installing, publishing, and managing WebAssembly modules and packages. It provides a decentralized registry and a set of tools for the WebAssembly ecosystem, functioning similarly to <i>npm</i> for Node.js or <i>pip</i> for Python. Users can leverage <b>wapm</b> to discover, download, and execute Wasm binaries, as well as to share their own compiled WebAssembly applications or libraries with others. It simplifies the process of distributing and consuming WebAssembly code, fostering reusability and collaboration within the WebAssembly development community. <b>wapm</b> integrates with various WebAssembly runtimes, most notably Wasmer, offering a streamlined experience for developers building modular and portable applications.


title: CAVEATS
content:
<b>wapm</b> is not a standard Linux utility and must be installed separately. Its functionality is specific to the WebAssembly ecosystem and typically requires a WebAssembly runtime (like Wasmer) to execute packages. It relies on the availability and responsiveness of the WAPM registry for package management.


title: WAPM REGISTRY
content:
The WAPM Registry is the central repository where WebAssembly packages are stored and retrieved. It acts as a public index for Wasm modules, similar to npmjs.com for JavaScript packages or PyPI for Python.


title: PACKAGE FORMAT
content:
WAPM packages typically bundle WebAssembly modules (<i>.wasm</i> files) along with metadata (often in a <i>wapm.toml</i> file) that describes the package, its dependencies, and entry points, ensuring portability and reusability.


title: HISTORY
content:
<b>wapm</b> emerged as a crucial component of the WebAssembly ecosystem, primarily driven by the need for a centralized package management solution as WebAssembly gained traction as a compilation target beyond browser environments. It was developed by Wasmer, Inc., to complement their WebAssembly runtime, Wasmer. The goal was to provide a familiar package manager experience for Wasm developers, simplifying the discovery, distribution, and execution of WebAssembly modules, mirroring similar tools in other programming language ecosystems. Its development parallels the growth of WebAssembly into server-side, CLI, and embedded applications.


title: SYNOPSIS
content:
The "wargames" are not invoked as a standalone command. Instead, they are accessed remotely using the <b>SSH</b> client.<br><br>The general syntax for connecting to an OverTheWire wargame server is:<br><br><b>ssh <i>username</i>@<i>hostname</i> -p <i>port</i></b><br><br>For example, to connect to the first level of the Bandit wargame:<br><br><b>ssh bandit0@bandit.labs.overthewire.org -p 2220</b><br><br>The specific <i>username</i>, <i>hostname</i>, and <i>port</i> vary for each wargame series and level, and are provided on the OverTheWire website.


title: DESCRIPTION
content:
The term "wargames" in the Linux context typically refers to the<br><br><b>OverTheWire Wargames</b>, a series of online, interactive security challenges designed to teach various aspects of computer security in a practical, hands-on manner.<br><br>These wargames are not a single Linux command you execute locally, but rather a set of remote servers accessible via <b>SSH</b>. Each wargame series, such as <i>Bandit</i>, <i>Natas</i>, <i>Leviathan</i>, or <i>Krypton</i>, focuses on different security disciplines, ranging from basic command-line usage and file permissions to web exploitation, cryptography, and binary exploitation.<br><br>Participants connect to a dedicated server for each game, solve a challenge (often finding a "flag" or password), and use that solution to log in to the next, more difficult level. This progressive learning approach makes them an excellent resource for beginners and seasoned security enthusiasts alike to develop and hone their skills in a safe, controlled environment.


title: CAVEATS
content:
<b>Requires Internet Connection:</b> Users need a stable internet connection to access the remote OverTheWire servers.<br><br><b>Educational Challenges:</b> These are not standard commands but interactive puzzles requiring active problem-solving, research, and critical thinking.<br><br><b>Basic Linux Familiarity:</b> A foundational understanding of the Linux command line is highly beneficial for navigating the challenges.<br><br><b>User Responsibility:</b> While the environment is safe, users are encouraged to understand the implications of commands they execute, especially when dealing with unknown binaries on the game servers.


title: ACCESS MODEL
content:
The "wargames" are not software installed and run on your local machine. They are remote environments hosted on dedicated servers, accessed exclusively via the <b>Secure Shell (SSH)</b> protocol. Each game presents a unique username, hostname, and port for connection.


title: LEARNING PHILOSOPHY
content:
The core purpose of the OverTheWire wargames is practical skill development. By solving successive levels, players learn about common vulnerabilities, security tools, Linux concepts, programming, and various hacking techniques in a legal and ethical manner.


title: POPULAR SERIES
content:
Some of the most popular wargame series include <b>Bandit</b> (beginner-friendly Linux fundamentals), <b>Natas</b> (web application security), <b>Leviathan</b> (advanced network exploitation), and <b>Krypton</b> (cryptography). Each series offers a distinct learning path.


title: HISTORY
content:
The OverTheWire Wargames project was initiated by the OverTheWire community as a platform to foster practical computer security skills. Starting with fundamental challenges, the series has grown significantly, becoming a widely recognized and respected resource in the cybersecurity community. Its development is community-driven, with contributions to new challenges and maintenance ensuring its continued relevance and educational value. The focus has always been on providing a hands-on learning experience that complements theoretical knowledge.


title: SYNOPSIS
content:
`warp-diag <I>[command]</I> [<I>options</I>]<br>or<br><I>sudo</I> warp-diag <I>[command]</I> [<I>options</I>]


title: PARAMETERS
content:
<b>debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Collects and prints detailed diagnostic information to standard output.<br><br><b>upload</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Collects diagnostic information and securely uploads it to Cloudflare's support system, providing a unique reference ID for tracking.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the command's usage instructions and available options.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the installed version of the Cloudflare WARP client.<br><br>


title: DESCRIPTION
content:
`warp-diag` is a command-line utility bundled with the <I>Cloudflare WARP client</I>. Its primary function is to collect comprehensive diagnostic logs and system-specific information crucial for troubleshooting issues related to the WARP service.<br><br>This data helps users and Cloudflare support teams pinpoint the root cause of connectivity problems, performance degradation, or other malfunctions experienced while using WARP, providing a snapshot of the client's operational state, network configuration, and relevant system logs.


title: CAVEATS
content:
Requires the <I>Cloudflare WARP client</I> to be installed and running.<br>Often requires <I>sudo</I> privileges to collect comprehensive system and network data.<br>The <I>upload</I> command sends system and network diagnostic information to Cloudflare; users should be aware of potential privacy implications, though Cloudflare states data is used for troubleshooting only.


title: OUTPUT DESTINATION
content:
When using the `debug` command, output is printed directly to your terminal. For the `upload` command, a unique reference ID is displayed upon successful upload, which can be shared with Cloudflare support. Local log files for the WARP client are typically found in directories like <I>/var/log/cloudflare-warp/</I> on Linux systems.


title: TROUBLESHOOTING AID
content:
`warp-diag` is primarily a support tool. Its output is often technical and intended to be analyzed by network professionals or Cloudflare's support team to diagnose complex connectivity or performance problems with the WARP service.


title: HISTORY
content:
Cloudflare launched its WARP service, a secure DNS resolver and VPN-like product, in 2019. As the service gained adoption, the need for robust diagnostic tools became apparent to assist users in troubleshooting network and connectivity issues, leading to the development and inclusion of `warp-diag` as a vital utility within the WARP client package.


title: PARAMETERS
content:
<b><b>--config</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file to load instead of the default.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose logging output to the console for debugging purposes.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information of <i><b>warpd</b></i> and exit.<br><br>


title: DESCRIPTION
content:
<i><b>warpd</b></i> is a minimalist, keyboard-driven mouse control daemon for Linux, primarily designed for Wayland compositors. It enables users to manipulate the mouse cursor, perform clicks, and scroll entirely through keyboard shortcuts. It operates by interacting with the <i>libinput</i> library to simulate mouse events, making it a valuable tool for keyboard-centric workflows, tiling window manager users, or individuals seeking to minimize mouse usage.<br><br>Unlike some other tools, <i><b>warpd</b></i> doesn't provide its own hotkey daemon; instead, it relies on external tools like <i><b>sxhkd</b></i> to bind keyboard shortcuts that trigger <i><b>warpd</b></i>'s actions (e.g., move cursor, click, scroll). Its highly configurable nature is primarily managed through a TOML configuration file, typically located at <i>~/.config/warpd/config.toml</i>, allowing users to customize speeds, acceleration, and various operational modes.


title: CAVEATS
content:
<b>Primarily for Wayland:</b> <i><b>warpd</b></i> is designed for Wayland compositors, leveraging <i>libinput</i>. While <i>libinput</i> also works on X11, <i><b>warpd</b></i>'s full functionality and intended use are strongly tied to Wayland.<br><br><b>No Built-in Hotkey Daemon:</b> It does <i>not</i> include its own hotkey daemon; relies on external tools (e.g., <b>sxhkd</b>) for keybinding management.<br><br><b>Config File Driven:</b> Configuration is extensively done via a TOML file (<i>~/.config/warpd/config.toml</i>), not directly through command-line arguments for most features.


title: CONFIGURATION
content:
<i><b>warpd</b></i> is highly configurable via its TOML configuration file, typically located at <i><b>~/.config/warpd/config.toml</b></i>. This file allows users to define cursor movement speeds, acceleration profiles, and enable various advanced mouse actions like 'normal mode', 'hint mode', 'grid mode', and 'screen warp'. These actions can then be mapped to keyboard shortcuts using an external hotkey daemon.


title: EXTERNAL HOTKEY INTEGRATION
content:
Unlike many tools that directly intercept keyboard input, <i><b>warpd</b></i> follows a design philosophy of separation of concerns. It does not handle keyboard input for triggering actions itself. Instead, it expects to receive commands (e.g., via <i>stdin</i> or a socket) from an external hotkey daemon like <i><b>sxhkd</b></i>. This design allows for seamless integration into existing user keybinding setups and avoids conflicts with other input tools.


title: ADVANCED MODES OF OPERATION
content:
Beyond basic cursor movement, <i><b>warpd</b></i> supports several powerful modes to enhance keyboard navigation:<br><br><b>Hint Mode:</b> Similar to browser extensions like Vimium, it displays clickable labels on screen elements, allowing direct selection via keyboard.<br><br><b>Grid Mode:</b> Divides the screen into a precise grid, enabling users to rapidly jump the cursor to specific screen regions.<br><br><b>Screen Warp:</b> Allows direct warping of the cursor to a specific monitor or screen edge.<br><br>These modes significantly expand the utility of keyboard-driven mouse control.


title: HISTORY
content:
<i><b>warpd</b></i> was created to provide a lightweight, keyboard-driven mouse control solution specifically for <b>Wayland</b> compositors, addressing the limitations of traditional X11-based tools like <i>xdotool</i> or <i>keynav</i> in the Wayland ecosystem. Its development emphasizes minimalism and robust input handling through <i>libinput</i>, filling a critical gap for keyboard-centric users transitioning to Wayland environments. It is an open-source project, continuously developed and typically available through distribution repositories or directly from its source code.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and their usage.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of the <i>wasm-objdump</i> utility.<br><br><b><b>-s</b> <i>&lt;SECTION&gt;</i>, <b>--section=</b><i>&lt;SECTION&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only the contents of the specified section. <i>&lt;SECTION&gt;</i> can be a section name (e.g., 'code', 'data', 'name') or a numeric index.<br><br><b><b>-d</b>, <b>--disassemble</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disassembles only the code section, showing the WebAssembly bytecode as human-readable instructions. This is typically the most frequently used option for code analysis.<br><br><b><b>-D</b>, <b>--disassemble-all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disassembles all sections that contain code or other executable content, providing a more comprehensive disassembly than <b>-d</b>.<br><br><b><b>-x</b>, <b>--full-contents</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the full contents of all sections, including raw byte dumps and interpreted data where applicable, offering a complete module overview.<br><br><b><b>-j</b>, <b>--section-headers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays summary information for all sections, including their names, types, sizes, and offsets within the module, similar to <b>readelf -S</b>.<br><br><b><b>-f</b>, <b>--file-headers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays high-level information about the WebAssembly module's header, such as the magic number and version.<br><br><b><b>-r</b>, <b>--reloc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the relocation entries of the WebAssembly module, if present. Relocations are used to resolve addresses at link-time.<br><br><b><b>-t</b>, <b>--syms</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the symbol table entries, useful for understanding imported and exported functions, global variables, and data segments.<br><br><b><b>--debug-names</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to display human-readable names for functions, locals, types, and other entities, often sourced from the 'name' custom section or DWARF debug information within the module.<br><br><b><b>--no-demangle</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the demangling of C++ or Rust style names (e.g., in function signatures), showing them in their raw, mangled form rather than their human-readable equivalents.<br><br>


title: DESCRIPTION
content:
<i>wasm-objdump</i> is a command-line utility from the WebAssembly Binary Toolkit (WABT) used to display comprehensive information about WebAssembly (<i>.wasm</i>) modules. It functions similarly to the traditional <i>objdump</i> tool for native binaries, allowing developers and security researchers to inspect the internal structure, sections, and disassembled code of a WebAssembly file. It provides detailed insights into various aspects of a Wasm module, such as its imported/exported functions, global variables, memory layout, and, most importantly, the WebAssembly bytecode instructions themselves. This tool is essential for debugging, reverse engineering, and understanding the compiled output of WebAssembly applications, aiding in performance analysis and security audits by providing a low-level view of the module's contents.


title: CAVEATS
content:
<i>wasm-objdump</i> is specifically designed for WebAssembly binaries (<i>.wasm</i> files) and cannot be used with native executable formats like ELF, PE, or Mach-O. Its ability to display meaningful debug information (e.g., source code lines, variable names) is entirely dependent on the presence and correct formatting of debug sections within the <i>.wasm</i> module. Without such sections, output may be less human-readable.


title: USAGE CONTEXT
content:
This command is invaluable for anyone working with WebAssembly at a low level, including compiler developers, security researchers analyzing Wasm code for vulnerabilities, and application developers debugging performance or correctness issues within their compiled Wasm modules. It helps in understanding the exact machine instructions executed by the WebAssembly virtual machine, providing a crucial bridge between high-level source code and the final binary output.


title: HISTORY
content:
<i>wasm-objdump</i> is an integral part of the WebAssembly Binary Toolkit (WABT), an open-source project developed by members of the WebAssembly community, including key contributors from Google. WABT provides a suite of tools for working with WebAssembly at a low level. <i>wasm-objdump</i> emerged as an essential debugging and analysis utility alongside the rise of WebAssembly as a portable compilation target for the web and various other environments. Its development has focused on providing a robust and detailed view into the WebAssembly binary format, crucial for understanding and optimizing Wasm modules.


title: PARAMETERS
content:
<b><b>-O</b>, <b>-O1</b>, <b>-O2</b>, <b>-O3</b>, <b>-O4</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify optimization levels. <b>-O0</b> is no-op. Higher levels enable progressively more optimizations. <b>-Os</b> and <b>-Oz</b> are available for size optimization.<br><br><b><b>--strip</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Strips all non-essential data from the module, including debug information, producers, and name sections.<br><br><b><b>--pass</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs a specific optimization pass by its name. Useful for targeted optimizations or debugging.<br><br><b><b>--all-passes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs all default optimization passes. This is usually implied by optimization levels like <b>-O1</b> and above.<br><br><b><b>--add-pass</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs a specific pass in addition to the default optimization passes set by <b>-O</b> levels.<br><br><b><b>-o</b>, <b>--output</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file path. If omitted, the optimized WebAssembly module is written to standard output.<br><br><b><b>--emit-text</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the optimized module in WebAssembly Text Format (WAT) instead of the default binary format.<br><br><b><b>--emit-binary</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the optimized module in WebAssembly Binary Format (WASM). This is the default behavior.<br><br><b><b>-v</b>, <b>--validate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates the module after optimization to ensure correctness and adherence to the WebAssembly specification.<br><br><b><b>--enable-<i>&lt;feature&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables specific experimental or proposed WebAssembly features (e.g., <b>--enable-simd</b>, <b>--enable-threads</b>, <b>--enable-gc</b>) for optimization.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive help message with all available options and optimization passes.<br><br>


title: DESCRIPTION
content:
<i>wasm-opt</i> is a powerful command-line tool from the <b>Binaryen</b> toolkit, designed to optimize WebAssembly (<i>.wasm</i>) binary modules. It can significantly reduce the size of <i>.wasm</i> files and improve their execution speed by applying various passes such as dead code elimination, local variable coalescing, instruction optimization, and more. It supports multiple optimization levels, allowing users to balance between optimization aggressiveness and compilation time. <i>wasm-opt</i> is a crucial tool for developers deploying WebAssembly to production environments, ensuring their modules are as efficient as possible. By default, it applies a set of common and safe optimizations, but users can also enable experimental features or run specific passes for fine-grained control. Its versatility makes it indispensable for achieving high-performance and compact WebAssembly applications.


title: CAVEATS
content:
Optimizations, especially aggressive ones like <b>-O3</b> or <b>-O4</b>, can significantly increase compilation time.<br>Using specific <b>--pass</b> options without understanding their effects may lead to unintended behavior or break module functionality.<br>While <i>wasm-opt</i> aims for correctness, it's always recommended to validate and test optimized modules thoroughly in their target environment.<br>Some experimental WebAssembly features require explicit <b>--enable-</b> flags to be recognized and optimized.


title: OPTIMIZATION PASSES
content:
<i>wasm-opt</i> includes a vast array of fine-grained optimization passes (e.g., <i>dce</i> for dead code elimination, <i>coalesce-locals</i> for merging locals, <i>precompute</i> for constant folding, <i>inlining</i> for function call inlining). These passes can be invoked individually using <b>--pass</b> <i>&lt;name&gt;</i>, allowing for highly specific optimization needs, research, or custom optimization pipelines beyond the standard <b>-O</b> levels.


title: TARGET ENVIRONMENTS
content:
The <b>--target-env</b> <i>&lt;name&gt;</i> option allows specifying the target WebAssembly environment (e.g., <i>web</i>, <i>node</i>, <i>wasm</i>). This can influence certain optimizations or validation rules based on the capabilities and requirements of the intended execution environment.


title: HISTORY
content:
<i>wasm-opt</i> is a core component of <b>Binaryen</b>, an optimizing compiler and toolkit for WebAssembly. Binaryen was initially developed by <b>Google</b> and has been a foundational tool since the early days of the WebAssembly specification. Its development focused on providing a fast, efficient, and flexible toolchain for WebAssembly, used widely for tasks such as post-compilation optimization (e.g., by <b>Emscripten</b>) and direct WebAssembly code manipulation.


title: SEE ALSO
content:
<b>wat2wasm</b>(1), <b>wasm2wat</b>(1), <b>wasm-dis</b>(1), <b>wasm-objdump</b>(1), <b>llvm-objcopy</b>(1)


title: PARAMETERS
content:
<b><i>-o &lt;output_prefix&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the prefix for the generated C and header files. E.g., <i>-o my_module</i> creates <i>my_module.c</i> and <i>my_module.h</i>.<br><br><b><i>--enable-all</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables all experimental WebAssembly features during conversion.<br><br><b><i>--enable-&lt;feature&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a specific experimental WebAssembly feature (e.g., <i>--enable-bulk-memory</i>).<br><br><b><i>--disable-&lt;feature&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables a specific WebAssembly feature during conversion.<br><br><b><i>--import-prefix &lt;prefix&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specified prefix to all imported function names in the generated C code.<br><br><b><i>--no-canonicalize-floats</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables canonicalization of float values, preserving their exact bit patterns.<br><br><b><i>--ignore-stack-overflow</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses emission of stack overflow checks in the generated C code.<br><br><b><i>--source-map-url &lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Embeds a source map URL in the generated output.<br><br><b><i>-h, --help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><i>-v, --version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
<i>wasm2c</i> is a command-line tool, part of the WebAssembly Binary Toolkit (WABT), designed to translate a WebAssembly binary module (<i>.wasm</i> file) into a C source file (<i>.c</i> file) and a corresponding header file (<i>.h</i>). This conversion enables developers to embed WebAssembly modules directly into C/C++ applications without requiring a full WebAssembly runtime. The generated C code includes a C API that can be called from the host application to interact with the Wasm module's exported functions and memory. This functionality is particularly valuable for ahead-of-time compilation, reducing runtime dependencies, or integrating Wasm logic into environments where a dedicated Wasm runtime might be too resource-intensive, such as embedded systems. The output C code is intended to be compiled by a standard C compiler (like <i>GCC</i> or <i>Clang</i>) and linked with the host application.


title: CAVEATS
content:
The generated C code is typically not intended for human readability or direct modification; it's an output of a compilation process.<br>It often requires linking with a small runtime component or specific helper functions assumed or generated by <i>wasm2c</i>.<br>The C output might not achieve the same performance as a JIT-compiled WebAssembly module, as it's a direct translation rather than an optimized compilation for a specific architecture.<br>This tool primarily targets embedding Wasm into C/C++ applications, not as a general-purpose Wasm-to-native compiler.


title: TYPICAL COMPILATION WORKFLOW
content:
The typical workflow involves using <i>wasm2c</i> to generate C and header files from a <i>.wasm</i> binary. These generated files can then be compiled using a standard C compiler like <i>gcc</i> or <i>clang</i>. The resulting object files are usually linked with a host C/C++ application that utilizes the exposed API from the generated C code to interact with the original WebAssembly module's functions and memory. This process enables the direct embedding of WebAssembly logic into native applications, offering a lightweight alternative to dynamic runtimes.


title: HISTORY
content:
<i>wasm2c</i> is an integral part of the WebAssembly Binary Toolkit (WABT), an open-source project primarily developed and maintained by Mozilla and the broader WebAssembly community. WABT was created to provide a suite of tools for working with WebAssembly modules, facilitating tasks like conversion, inspection, and validation. <i>wasm2c</i> specifically emerged to support scenarios where a full WebAssembly runtime is undesirable or unavailable, offering a static compilation target for Wasm modules and enabling their integration into traditional C/C++ environments, including embedded systems and ahead-of-time compilation workflows. Its development tracks the evolution of the WebAssembly specification, with new features being added as they stabilize.


title: PARAMETERS
content:
<b><I>input-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input WebAssembly binary (<i>.wasm</i>) file. If omitted, input is read from standard input.<br><br><b><B>-o</B> <I>output-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path for the output WebAssembly text (<i>.wat</i>) file. If omitted, output is written to standard output.<br><br><b><B>-h</B>, <B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and exits.<br><br><b><B>-v</B>, <B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of <i>wasm2wat</i> and exits.<br><br><b><B>--fold-exprs</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats expressions in the output by folding them, which can make the output more compact and easier to read for complex expressions.<br><br><b><B>--no-debug-names</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the output of debug names (e.g., for functions, locals, globals) that might be embedded in the <i>.wasm</i> file. This results in a smaller, more generic <i>.wat</i> output.<br><br><b><B>--inline-exports</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inlines exports directly into their definitions (e.g., function exports appear with the function definition), rather than listing them separately at the end of the module.<br><br><b><B>--enable-all</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables all experimental WebAssembly proposals supported by <i>wasm2wat</i>. Use with caution, as some proposals might still be in flux.<br><br><b><B>--enable-exceptions</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly exceptions proposal, allowing the conversion of related instructions.<br><br><b><B>--enable-reference-types</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly reference types proposal, which introduces new types like <i>funcref</i> and <i>externref</i>.<br><br><b><B>--enable-simd</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly SIMD (Single Instruction, Multiple Data) proposal, for vector operations.<br><br><b><B>--enable-threads</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly threads proposal, including shared memory and atomic operations.<br><br><b><B>--enable-tail-call</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly tail call proposal, allowing for optimization of recursive calls.<br><br><b><B>--enable-multi-value</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly multi-value proposal, allowing functions to return multiple values and blocks to yield multiple values.<br><br><b><B>--enable-bulk-memory</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly bulk memory operations and reference type instructions proposal.<br><br><b><B>--enable-mutable-globals</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly mutable globals proposal, allowing global variables to be declared as mutable.<br><br><b><B>--enable-sign-extension</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly sign extension operations proposal.<br><br><b><B>--enable-nontrapping-fptoint</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the WebAssembly non-trapping float-to-int conversions proposal.<br><br>


title: DESCRIPTION
content:
<i>wasm2wat</i> is a fundamental utility from the <b>WebAssembly Binary Toolkit (WABT)</b>, designed to convert a WebAssembly binary module (typically a <i>.wasm</i> file) into its human-readable text representation (a <i>.wat</i> file). WebAssembly (Wasm) is a low-level bytecode format optimized for high-performance execution, primarily in web browsers but also in serverless and embedded environments. While <i>.wasm</i> files are compact and efficient for machines, they are opaque and difficult for humans to interpret directly.<br><br>The <b>WebAssembly Text Format (WAT)</b> provides an S-expression-based syntax that mirrors the structure of the binary module. This conversion is invaluable for developers for several reasons: it enables debugging, allows for manual inspection of code generated by compilers (like Emscripten, Rust, or Go), and facilitates learning the WebAssembly instruction set. Developers can inspect the module's imports, exports, functions, types, and data segments in a clear, structured way. <i>wasm2wat</i> supports various WebAssembly proposals and features, offering command-line options to control the output format and enable experimental features, ensuring it stays current with the evolving WebAssembly standard.


title: CAVEATS
content:
Converting very large <i>.wasm</i> files can result in excessively large <i>.wat</i> files, potentially making them difficult to view, search, or process with standard text editors. The output format and support for specific WebAssembly features can vary between different versions of <i>wasm2wat</i>; always ensure you are using a version compatible with your WebAssembly binary's origin and target environment. Enabling experimental features via <i>--enable-*</i> flags might produce <i>.wat</i> output that cannot be re-assembled by older <i>wat2wasm</i> versions or validated by tools that do not support those same proposals.


title: USAGE SCENARIOS
content:
<i>wasm2wat</i> is indispensable for debugging Wasm modules, reverse-engineering compiled code, understanding the output of WebAssembly compilers (e.g., Emscripten, Rust's <i>wasm32-unknown-unknown</i> target), and learning the intricacies of the WebAssembly instruction set. It provides a textual representation that can be more easily analyzed and understood than raw binary data.


title: WEBASSEMBLY TEXT FORMAT (WAT)
content:
The WebAssembly Text Format (WAT) uses a concise S-expression syntax, making it structured and relatively easy to parse by humans. It directly maps to the WebAssembly binary format, allowing developers to see the module's structure, functions (including their local variables, parameters, and return types), types, imports, exports, global variables, and data/element segments. This human-readable form is crucial for effective development and debugging.


title: HISTORY
content:
<i>wasm2wat</i> is a core component of the <b>WebAssembly Binary Toolkit (WABT)</b>, an open-source project primarily developed by Google engineers and contributors from the WebAssembly working group. WABT was created to provide essential command-line tools for working with WebAssembly modules, facilitating the development and debugging workflow before comprehensive browser developer tools for WebAssembly were widely available. <i>wasm2wat</i> has been a foundational part of WABT since its early days, evolving in lockstep with the WebAssembly specification itself, and continually integrating support for new proposals and features as they advance through the standardization process. Its development reflects the community's need for transparent inspection of the Wasm binary format.


title: SYNOPSIS
content:
<b>wat2wasm</b> [<i>options</i>] &lt;<i>input.wat</i>&gt; [<b>-o</b> &lt;<i>output.wasm</i>&gt;]<br><br>The command takes a WebAssembly Text Format (<b>.wat</b>) file as input. If the <b>-o</b> or <b>--output</b> option is specified, the resulting WebAssembly Binary Format (<b>.wasm</b>) is written to the given output file; otherwise, it is written to standard output.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>wat2wasm</b> utility.<br><br><b><b>-o</b> <i>FILE</i>, <b>--output=</b><i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file for the WebAssembly binary. If omitted, the output is written to standard output (<i>stdout</i>).<br><br><b><b>-r</b>, <b>--relocatable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a relocatable WebAssembly binary, suitable for linking with other modules later.<br><br><b><b>-d</b>, <b>--debug-names</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds debug names to the WebAssembly binary, aiding in debugging and inspection. This is the default if no source map is generated.<br><br><b><b>--no-debug-names</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly prevents the addition of debug names to the WebAssembly binary.<br><br><b><b>--inline-source-map</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Embeds the source map directly into the WebAssembly binary. This is the default if no output file is specified.<br><br><b><b>--no-inline-source-map</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables embedding the source map into the WebAssembly binary.<br><br><b><b>--source-map-url=</b><i>URL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a URL for the external source map file. This option is used when the source map is not inlined.<br><br><b><b>--source-map-url-prologue=</b><i>PROLOGUE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prepends custom text to the source map URL, useful for CDN paths or specific server configurations.<br><br><b><b>--enable-feature=</b><i>&lt;feature&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a specific experimental WebAssembly feature (e.g., <i>simd</i>, <i>threads</i>, <i>reference-types</i>). Can be specified multiple times.<br><br><b><b>--disable-feature=</b><i>&lt;feature&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables a specific WebAssembly feature. Can be specified multiple times.<br><br>


title: DESCRIPTION
content:
<b>wat2wasm</b> is a command-line utility provided as part of the WebAssembly Binary Toolkit (WABT). Its primary function is to compile WebAssembly Text Format (<b>.wat</b>) files into WebAssembly Binary Format (<b>.wasm</b>) files. The <b>.wat</b> format is a human-readable and writable textual representation of WebAssembly modules, often used for manual authoring, debugging, or as an intermediate target for compilers. Conversely, the <b>.wasm</b> format is a compact, efficient, and executable binary format that WebAssembly runtimes (like those in web browsers or standalone environments) consume directly. This tool is indispensable in the WebAssembly development workflow, bridging the gap between human-friendly text and machine-optimized binary code, enabling developers to iteratively design, test, and deploy WebAssembly modules.


title: CAVEATS
content:
<b>wat2wasm</b> is a low-level utility focused purely on the WebAssembly Text to Binary conversion. It does <i>not</i> compile higher-level languages (like C/C++, Rust, or AssemblyScript) directly into WebAssembly; for that, one would use compilers like <b>Clang</b> with <b>LLVM</b>, <b>Rustc</b>, or <b>Emscripten</b>. The tool relies on the input <b>.wat</b> file adhering strictly to the WebAssembly Text Format syntax. Support for WebAssembly features via <b>--enable-feature</b> and <b>--disable-feature</b> depends on the version of WABT being used, and experimental features might change or be removed in future versions.


title: INPUT/OUTPUT BEHAVIOR
content:
When the <b>-o</b> or <b>--output</b> option is omitted, <b>wat2wasm</b> will write the resulting WebAssembly binary to standard output (<i>stdout</i>). This allows for piping the output to other commands or redirecting it easily. Similarly, if the <b>--inline-source-map</b> option is used without specifying an output file (i.e., outputting to <i>stdout</i>), the source map will be inlined by default.


title: WEBASSEMBLY FEATURES
content:
The <b>--enable-feature</b> and <b>--disable-feature</b> options are used to control support for specific WebAssembly proposals and experimental features. Examples of such features include <i>SIMD</i> (Single Instruction, Multiple Data), <i>threads</i>, <i>reference types</i>, <i>exception handling</i>, and <i>tail calls</i>. Using these options allows developers to compile WebAssembly modules that leverage newer capabilities, but it's important to ensure that the target WebAssembly runtime also supports these features.


title: HISTORY
content:
<b>wat2wasm</b> is a foundational component of the WebAssembly Binary Toolkit (WABT), an open-source project providing a suite of tools for working with WebAssembly. WABT was created and is maintained by members of the WebAssembly community to provide essential utilities for parsing, validating, encoding, and decoding WebAssembly modules. As WebAssembly itself emerged as a crucial web standard (and now an increasingly important runtime outside browsers) for high-performance, secure, and portable code, tools like <b>wat2wasm</b> became indispensable. Its development has closely tracked the evolution of the WebAssembly specification, ensuring compliance with new features and best practices, and facilitating the transition from human-readable text to the compact binary format required for deployment and execution.


title: SEE ALSO
content:
<i>Related tools often used in conjunction with <b>wat2wasm</b> or in the broader WebAssembly ecosystem include:</i><br>, <b>wasm2wat(1)</b>: <i>The inverse operation, converting WebAssembly binary to text format.</i><br>, <b>wasm-objdump(1)</b>: <i>A utility for displaying information about WebAssembly object files.</i><br>, <b>wasm-interp(1)</b>: <i>An interpreter for WebAssembly binaries, useful for testing.</i><br>, <b>clang(1)</b>: <i>A C/C++/Objective-C/Objective-C++ compiler front-end that can target WebAssembly via LLVM.</i><br>, <b>emcc(1)</b>: <i>The Emscripten compiler front-end, used to compile C/C++ code into WebAssembly and JavaScript.</i>


title: PARAMETERS
content:
<b><b>-d</b>, <b>--differences</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Highlight changes between successive updates. Use `<b>-d=cumulative</b>` to highlight all changes since the first update.</i><br><br><b><b>-n &lt;seconds&gt;</b>, <b>--interval=&lt;seconds&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the update interval in seconds. Default is 2 seconds.</i><br><br><b><b>-t</b>, <b>--no-title</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Turn off the header showing the command, interval, and current time.</i><br><br><b><b>-e</b>, <b>--chgexit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Exit <i><b>watch</b></i> immediately if the output of the command changes.</i><br><br><b><b>-x</b>, <b>--exec</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Execute the command via `<b>sh -c</b>`. This is crucial when the command contains shell metacharacters like pipes (`<b>|</b>`) or redirections (`<b>&gt;</b>`, `<b>&lt;&lt;</b>`).</i><br><br><b><b>-c</b>, <b>--color</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Interpret ANSI color and style sequences.</i><br><br><b><b>-p</b>, <b>--precise</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Attempt to run the command exactly on the specified interval, rather than waiting for the command to finish.</i><br><br>


title: DESCRIPTION
content:
<i><b>watch</b></i> is a command-line utility in Linux that allows you to execute a specified command repeatedly and display its output on the console. It's particularly useful for monitoring changes in system status, file contents, or the output of other commands over time without manually re-executing them.<br><br>By default, <i><b>watch</b></i> clears the screen and redisplays the output every two seconds. It can also highlight the differences between successive updates, making it easy to spot changes. Users can specify the refresh interval, choose not to display the header, or exit when the command's output changes. It's an excellent tool for real-time system monitoring, debugging, and observing dynamic data.


title: CAVEATS
content:
<i><b>watch</b> is not suitable for commands that produce side effects (e.g., modifying files, deleting data) or require interactive input, as it executes the command repeatedly without user intervention.<br><br>Output buffering by the watched command can sometimes delay updates within <b>watch</b>. Using tools like `<b>unbuffer</b>` (from the `<b>expect</b>` package) or `<b>stdbuf -oL</b>` may help in such cases.<br><br>Complex commands involving shell features (pipes, redirections) often require being enclosed in quotes and used with the `<b>-x</b>` (<code>--exec</code>) option for correct execution.</i>


title: EXIT STATUS
content:
<i>The <b>watch</b> command typically returns the exit status of the <b>last</b> execution of the watched command. If <b>watch</b> itself encounters an error (e.g., the command specified cannot be found), it usually returns an exit status of 255.</i>


title: COMMAND QUOTING
content:
<i>When the command argument to <b>watch</b> contains spaces, shell metacharacters (e.g., `<b>|</b>`, `<b>&gt;</b>`, `<b>&lt;</b>`, `<b>&amp;</b>`), or refers to shell built-ins, it must be enclosed in single or double quotes. For complex commands involving pipes or redirection, the `<b>-x</b>` (<code>--exec</code>) option is essential to ensure the command is executed by `<b>sh -c</b>`, allowing proper shell interpretation.</i>


title: HISTORY
content:
<i><b>watch</b> is part of the `<b>procps</b>` (or `<b>procps-ng</b>`) package, a collection of utilities for controlling and monitoring processes in Linux. It has been a standard utility in Unix-like systems for many years, providing a simpler alternative to manual re-execution or shell loops like `<b>while true; do ...; sleep N; done</b>`.</i>


title: PARAMETERS
content:
<b>-w, --watch <PATH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify paths or files to monitor for changes. Can be used multiple times.</i><br><br><b>-e, --exts <EXTS></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Filter watched files by a comma-separated list of extensions (e.g., 'rs,toml,json').</i><br><br><b>-i, --ignore <PATH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Define paths or files to explicitly exclude from monitoring. Can be used multiple times.</i><br><br><b>-f, --filter <PATTERN></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Apply Gitignore-style patterns to filter watched paths. Can be used multiple times.</i><br><br><b>--clear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Clear the terminal screen before each command execution.</i><br><br><b>-r, --restart</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Kill the previous command instance and restart it upon changes.</i><br><br><b>-s, --signal <SIGNAL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Send a specified signal (e.g., SIGTERM, SIGKILL) to the child process on exit or restart.</i><br><br><b>-p, --poll</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Use polling instead of native file system events for monitoring. Useful for network drives or environments where native events are unreliable.</i><br><br><b>-d, --debounce <MILLISECONDS></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Set a delay in milliseconds to wait for events to settle before executing the command. Default is 500ms.</i><br><br><b>--shell <SHELL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the shell used to run the command (e.g., /bin/bash, cmd.exe).</i><br><br><b>--no-meta</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not pass metadata about the change (like changed file paths) to the executed command via environment variables.</i><br><br><b>--postpone</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Wait for the first file change before initially running the command. By default, the command runs once on startup.</i><br><br>


title: DESCRIPTION
content:
<i><br></i><b>watchexec</b> is a modern, cross-platform command-line tool that monitors files and directories for changes, then executes a specified command. It is widely used in development workflows to automate tasks like recompiling code, restarting servers, or running tests automatically when source files are modified. Designed for efficiency, it intelligently debounces file system events to prevent excessive command executions and offers robust filtering capabilities to include or exclude specific paths. It supports various events including creation, modification, and deletion across different operating systems. Its reliability and ease of use make it an invaluable utility for improving developer productivity.


title: CAVEATS
content:
<i><br></i>File system event reliability can vary between operating systems and file systems (e.g., network mounts, WSL). The <code>--poll</code> option can mitigate this but might consume more resources.<i><br></i>Complex commands passed after <code>--</code> may require careful shell escaping, especially on Windows or when using specific shells.<i><br></i>Monitoring a very large number of files or deeply nested directories can increase resource usage and potentially impact performance.


title: COMMON USE CASES
content:
<i><br></i><b>watchexec</b> is frequently used to automate development tasks, significantly improving developer feedback loops:<i><br></i><ul><li>Automatically recompiling code (e.g., <code>watchexec -w src -e rs -- cargo build</code>)</li><li>Restarting web servers or backend services on code changes.</li><li>Running test suites upon file modifications.</li><li>Triggering linters or formatters on save.</li><li>Automating deployment steps during local development.</li></ul>


title: SIGNAL HANDLING
content:
<i><br></i>The <code>--signal</code> option is crucial for managing long-running processes. It allows <b>watchexec</b> to send a specific signal (like <code>SIGTERM</code> for graceful shutdown or <code>SIGKILL</code> for immediate termination) to the child process when files change or <b>watchexec</b> itself exits, ensuring proper resource cleanup and preventing orphaned processes.


title: HISTORY
content:
<i><br></i><b>watchexec</b> was developed to provide a modern, robust, and cross-platform file watcher, addressing limitations of existing tools like platform specificity or performance issues. Written in Rust, it leverages efficient native file system APIs where available and provides a consistent experience across Linux, macOS, and Windows. Its design prioritizes reliability and ease of integration into various development workflows since its initial release around 2017.


title: SYNOPSIS
content:
<b>watchman</b> [<i>global-options</i>] &lt;<i>command</i>&gt; [<i>command-options</i>] [<i>arguments</i>]


title: PARAMETERS
content:
<b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>--version</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version number and exits.<br><br><b><b>--sockname</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Unix socket for communication with the <b>watchman</b> server. Overrides default socket paths.<br><br><b><b>--foreground</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the <b>watchman</b> server in the foreground, useful for debugging.<br><br><b><b>--log-level</b> <i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging level for the server (e.g., <i>debug</i>, <i>info</i>, <i>warning</i>, <i>error</i>).<br><br><b><b>--json-output</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the command's output as JSON, suitable for programmatic parsing.<br><br><b><b>watch</b> <i>&lt;directory&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Establishes a persistent watch on the specified directory. This is usually the first step to monitor a project.<br><br><b><b>find</b> <i>&lt;directory&gt;</i> [<i>options</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Queries the watched directory for files matching specified criteria (e.g., name, size, time).<br><br><b><b>trigger</b> <i>&lt;directory&gt;</i> <i>&lt;name&gt;</i> <i>&lt;command_array&gt;</i> [<i>options</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a named trigger that executes a specified command when files change in the directory according to defined rules.<br><br><b><b>subscribe</b> <i>&lt;directory&gt;</i> <i>&lt;name&gt;</i> [<i>options</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Subscribes to file changes in a directory, receiving real-time notifications, often used by long-running client processes.<br><br><b><b>watch-list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all directories currently being watched by the <b>watchman</b> server.<br><br><b><b>trigger-list</b> <i>&lt;directory&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all triggers associated with a specific watched directory.<br><br><b><b>log</b> <i>&lt;level&gt;</i> <i>&lt;message&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a custom log message to the <b>watchman</b> server's log output.<br><br><b><b>status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports the health and current status of the <b>watchman</b> server.<br><br><b><b>shutdown-server</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Gracefully shuts down the running <b>watchman</b> server instance.<br><br><b><b>version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Returns the version of the <b>watchman</b> server and the protocol it supports.<br><br><b><b>get-sockname</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the path to the Unix socket that the <b>watchman</b> server is using.<br><br>


title: DESCRIPTION
content:
<b>watchman</b> is an open-source, cross-platform file monitoring service developed by <i>Facebook</i>. It is designed to recursively watch one or more directory trees for changes and trigger actions when files are modified. Unlike simpler file watch utilities, <b>watchman</b> is built for performance and scalability, making it ideal for large codebases and complex build systems.<br><br>It uses native OS file system event APIs (like <i>inotify</i> on Linux, <i>FSEvents</i> on macOS, <i>ReadDirectoryChangesW</i> on Windows) to efficiently detect changes. Its client-server architecture allows multiple clients to connect to a single <b>watchman</b> server instance, reducing resource overhead. It's commonly used by development tools like React Native, Yarn, and various build tools to enable fast incremental builds, live reloading, and real-time synchronization.


title: CAVEATS
content:
<ul><li><b>Resource Usage</b>: Can consume significant memory and CPU, especially with many watched directories or very active file systems. Careful configuration is advised for large-scale deployments.</li><li><b>System Limits</b>: Relies on OS-level file watch limits (e.g., <i>inotify</i> watches on Linux). These limits may need to be increased for large projects to prevent errors.</li><li><b>Initial Scan</b>: When a watch is established on a new directory, <b>watchman</b> performs an initial recursive scan, which can be time-consuming for very large directory trees.</li><li><b>Permission Issues</b>: Requires appropriate file system permissions to watch directories, create its socket, and write logs.</li><li><b>Symbolic Links</b>: Default behavior for symbolic links can sometimes lead to unexpected results; explicit handling might be needed depending on the specific use case.</li></ul>


title: CLIENT-SERVER ARCHITECTURE
content:
<b>watchman</b> operates as a daemon (server) that maintains persistent watches and a separate command-line tool (client) that communicates with the server to establish watches, query for changes, or configure triggers. This separation allows multiple tools and processes to leverage the same file watching infrastructure without duplicating effort or consuming excessive resources.


title: TRIGGER SYSTEM
content:
One of <b>watchman</b>'s most powerful features is its ability to define "triggers." A trigger is a command that <b>watchman</b> will execute automatically when specified file changes occur within a watched directory. This enables automated tasks like recompiling code, refreshing browser views, or running tests upon file modifications.


title: CROSS-PLATFORM COMPATIBILITY
content:
Designed to work across Linux, macOS, and Windows, <b>watchman</b> abstracts away the underlying operating system's specific file event mechanisms. This ensures consistent behavior and reliable file change detection for development teams working on different platforms.


title: HISTORY
content:
<b>watchman</b> was developed by <i>Facebook</i> to address the performance challenges of building and developing large projects, particularly those involving JavaScript (like React Native) and other web technologies. Traditional file watching mechanisms often proved too slow or resource-intensive for the scale of <i>Facebook's</i> monorepos. It was open-sourced to provide a robust and efficient solution for the broader developer community, becoming a key component in many modern build workflows and developer toolchains.


title: SYNOPSIS
content:
<b>watson</b> [global-options] &lt;command&gt; [command-options] [arguments]<br><br>Examples:<br><b>watson start</b> &lt;project&gt; [&lt;tag&gt;...]<br><b>watson stop</b><br><b>watson report</b> [--from &lt;date&gt;] [--to &lt;date&gt;]


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message for the command or subcommand and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <i>watson</i>'s version number and exit (global option).<br><br><b><b>-c</b> &lt;file&gt;, <b>--config</b>=&lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file for <i>watson</i> (global option).<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print more detailed information, useful for debugging (global option).<br><br><b><b>--at</b> &lt;time&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;For commands like <b>start</b> or <b>edit</b>, sets the start time of the frame explicitly. Format can be 'HH:MM' or 'YYYY-MM-DD HH:MM'.<br><br><b><b>--gap</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For <b>start</b>, starts a new frame even if another frame is already running, creating a time gap.<br><br><b><b>--from</b> &lt;date&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter results (e.g., for <b>report</b>, <b>log</b>) to include entries from a specific date. Date formats vary (e.g., 'YYYY-MM-DD', 'yesterday').<br><br><b><b>--to</b> &lt;date&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter results (e.g., for <b>report</b>, <b>log</b>) to include entries up to a specific date.<br><br><b><b>--project</b> &lt;project&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter results (e.g., for <b>report</b>, <b>log</b>) by a specific project name.<br><br><b><b>--tag</b> &lt;tag&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter results (e.g., for <b>report</b>, <b>log</b>) by a specific tag.<br><br><b><b>--csv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the report in CSV (Comma Separated Values) format (for <b>report</b>).<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the report in JSON (JavaScript Object Notation) format (for <b>report</b>).<br><br><b><b>--year</b>, <b>--month</b>, <b>--week</b>, <b>--day</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter the report by a specific period (e.g., current year, last month) (for <b>report</b>).<br><br>


title: DESCRIPTION
content:
<i>watson</i> is a command-line time tracking application designed to be simple, unobtrusive, and powerful. It allows users to easily start and stop tracking time on various projects and tasks using tags. The tool records time spent on activities, storing this data locally, typically in your home directory's configuration folder. This local storage ensures privacy and offline usability. <br><br> One of <i>watson</i>'s core strengths lies in its minimalist approach, making it quick to log entries without leaving the terminal. It provides robust reporting capabilities, enabling users to generate summaries of time spent daily, weekly, or over custom periods, filtered by project or tag. Reports can be output in various formats, including plain text, CSV, or JSON, facilitating integration with other tools. <br><br> As a Python-based utility, <i>watson</i> is highly portable and can be easily installed using <b>pip</b>. It's a preferred choice for developers, freelancers, and anyone seeking an efficient, low-overhead method to manage and analyze their time spent on different activities, fostering better time management and productivity.


title: CAVEATS
content:
<i>watson</i> is not a standard Linux utility; it must be installed separately, typically using Python's <b>pip</b> package manager. As a command-line tool, it does not provide a graphical user interface (GUI) by default. Its data is stored locally, which is great for privacy and offline work but means it doesn't inherently support multi-user collaboration or cloud synchronization without external tools or custom scripts.


title: <I>CONFIGURATION</I>
content:
<i>watson</i> stores its configuration and data files in the user's home directory, typically under <i>~/.config/watson/</i>. This includes <i>config.ini</i> for customizable settings (like display formats, data paths, and aliases) and data files (e.g., <i>frames.json</i>) that hold all recorded time entries. Users can edit <i>config.ini</i> to tailor the tool to their specific needs.


title: <I>EXTENSIBILITY</I>
content:
<i>watson</i> supports a plugin system, allowing users to extend its functionality with custom commands or modify existing behaviors. This extensibility enables integration with other services, creation of specialized reports, or adding features not present in the core application, making it highly adaptable to various workflows.


title: HISTORY
content:
<i>watson</i> was developed by TailorDev as an open-source, lightweight, and user-friendly command-line time tracking solution. It emerged as a response to the need for a simple yet powerful tool for developers and individuals to log time without the overhead of more complex or proprietary solutions. Its development has been community-driven, focusing on a clean interface and extensibility since its inception.


title: PARAMETERS
content:
<b><b>-c</b>, <b>--config</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the main configuration file, typically in JSON format. This file defines modules, their order, and settings.<br><br><b><b>-s</b>, <b>--style</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the CSS stylesheet used for bar styling, including fonts, colors, and layout.<br><br><b><b>-b</b>, <b>--bar</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a specific name to a bar instance, useful for managing multiple bars with different configurations.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Waybar version information and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the help message and available command-line options, then exits.<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug logging, providing more verbose output to the console for troubleshooting purposes.<br><br>


title: DESCRIPTION
content:
Waybar is a highly customizable, modular status bar designed specifically for <b>Wayland compositors</b> such as Sway, Hyprland, and GNOME. It provides users with a flexible and visually appealing way to display system information like CPU usage, memory, network status, battery life, and date/time. <br><br>Users configure Waybar through a <i>JSON file</i>, defining module layouts, appearance, and behavior. Styling is handled via <i>CSS</i>, allowing for extensive customization of fonts, colors, and overall look. Its modular architecture enables users to add or remove various built-in modules or even create custom ones using shell scripts, making it adaptable to diverse workflow needs and ensuring seamless integration with the Wayland desktop environment.


title: CAVEATS
content:
Waybar <i>requires a Wayland compositor</i> (e.g., Sway, Hyprland) to function; it is not compatible with Xorg. Its extensive customization options, while powerful, can sometimes lead to complex configurations requiring careful attention to JSON and CSS syntax. Some modules may also have additional dependencies specific to their functionality.


title: CONFIGURATION FILES
content:
Waybar's behavior and appearance are primarily controlled by two types of files: a <b>JSON configuration file</b> (defaulting to <code>~/.config/waybar/config</code>) and a <b>CSS stylesheet</b> (defaulting to <code>~/.config/waybar/style.css</code>). The JSON file defines which modules are active, their order, and module-specific settings, while the CSS file dictates fonts, colors, padding, and other visual styles for the entire bar and its modules.


title: MODULAR DESIGN
content:
The strength of Waybar lies in its <i>modular design</i>. It offers a wide array of built-in modules for common system indicators (e.g., clock, battery, network, CPU), but also supports <b>custom modules</b>. Users can define these custom modules to run arbitrary shell commands, allowing for display of virtually any information. This flexibility makes Waybar highly adaptable to individual user preferences and unique system monitoring needs.


title: HISTORY
content:
Waybar emerged as a vital component in the maturing Wayland ecosystem, providing a modern, feature-rich status bar alternative to those designed for Xorg (like Polybar or i3bar). Its development has been driven by the need for native Wayland solutions, offering seamless integration and leveraging Wayland-specific protocols for better performance and security. It quickly became a popular choice for users transitioning to or building Wayland-native desktop environments.


title: PARAMETERS
content:
<b><B>-u</B>, <B>--url</B> <I>target_url</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target URL or domain for which subdomains and IPs are to be enumerated. This is a mandatory argument for the tool to function.<br><br><b><B>-o</B>, <B>--output</B> <I>file_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the discovered subdomains to the specified output file, one subdomain per line.<br><br><b><B>-s</B>, <B>--subs</B> <I>file_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves both the discovered subdomains and their resolved IP addresses to the specified output file.<br><br><b><B>-w</B>, <B>--waymore</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the tool to run only its native WayMore.py enumeration logic, without utilizing or integrating with the 'bbot' tool.<br><br><b><B>-b</B>, <B>--bbot</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the tool to run only the 'bbot' integration logic for reconnaissance, bypassing WayMore.py's specific WayBack Machine queries.<br><br><b><B>-c</B>, <B>--combine</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a combined mode where results from both WayMore.py's internal methods and the 'bbot' integration are gathered and presented.<br><br><b><B>-p</B>, <B>--parallel</B> <I>num_threads</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of parallel threads or concurrent workers to use for faster data fetching and processing.<br><br><b><B>-t</B>, <B>--timeout</B> <I>seconds</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the maximum time in seconds to wait for a network request to complete before timing out.<br><br><b><B>--no-subs</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A flag to prevent the tool from enumerating or displaying subdomains. Useful if only IP resolution or other data is needed.<br><br><b><B>--no-ips</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A flag to prevent the tool from resolving IP addresses for the discovered subdomains.<br><br><b><B>--no-archive</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables querying the WayBack Machine. The tool will then rely on other integrated sources (e.g., bbot) if enabled.<br><br>


title: DESCRIPTION
content:
The command 'waymore' is not a standard, pre-installed Linux utility. This analysis is based on <B>WayMore.py</B>, a popular Python-based open-source intelligence (OSINT) tool. Its primary function is to perform subdomain enumeration and IP address discovery by leveraging historical data from the <B>WayBack Machine</B> (archive.org). <br><br>WayMore.py helps security professionals, penetration testers, and bug bounty hunters to uncover both active and forgotten subdomains associated with a target domain, significantly expanding the attack surface for further reconnaissance. It can also resolve the corresponding IP addresses for these subdomains. The tool is designed to be efficient and also offers integration capabilities with other reconnaissance tools like <B>bbot</B> for a more comprehensive data collection strategy.


title: CAVEATS
content:
The term 'waymore' does not refer to a standard, universally available Linux command. This analysis specifically addresses <B>WayMore.py</B>, a third-party Python script. It requires <B>Python 3</B> and its associated dependencies to be installed on the system. As an OSINT tool, its effectiveness relies on the availability and accuracy of external data sources like the WayBack Machine. Users should always ensure they have legal authorization before performing reconnaissance on any target domain.


title: INSTALLATION AND COMMON USAGE
content:
Since WayMore.py is a Python script, it is not installed via typical package managers like `apt` or `dnf`. It's commonly acquired by cloning its GitHub repository and installing Python dependencies using `pip`.<br><br><I>Example Installation (from source):</I><br><code>git clone https://github.com/six2fan/WayMore.git<br>cd WayMore<br>pip3 install -r requirements.txt</code><br><br><I>Example Usage:</I><br>To find subdomains for 'example.com' and save them:<br><code>python3 WayMore.py --url example.com --output example_subs.txt</code><br><br>To find subdomains and their IPs for 'target.org' and display on screen:<br><code>python3 WayMore.py --url target.org --no-output</code>


title: HISTORY
content:
WayMore.py was developed as an open-source project by 'six2fan' and is primarily maintained and distributed through GitHub. Its creation aimed to fill a specific niche in the reconnaissance toolkit by efficiently leveraging the vast historical datasets of the WayBack Machine for subdomain discovery. While it doesn't possess the long history of core Linux utilities, its utility in the cybersecurity and penetration testing communities has made it a recognized tool for expanding attack surfaces during initial reconnaissance phases.


title: SEE ALSO
content:
<I>subfinder</I> (OSINT tool), <I>assetfinder</I> (OSINT tool), <I>bbot</I> (OSINT tool), <I>amass</I> (OSINT tool), <I>dig</I> (1) (DNS lookup utility)


title: SYNOPSIS
content:
<b>wbinfo</b> [<I>options</I>]<br><b>wbinfo</b> {<b>-u</b>|<b>--users</b>} [<I>DOMAIN</I>]<br><b>wbinfo</b> {<b>-g</b>|<b>--groups</b>} [<I>DOMAIN</I>]<br><b>wbinfo</b> {<b>-i</b>|<b>--user-info</b> <I>USERNAME</I>}<br><b>wbinfo</b> {<b>--uid-to-sid</b> <I>UID</I>|<b>--sid-to-uid</b> <I>SID</I>}<br><b>wbinfo</b> {<b>--name-to-sid</b> <I>NAME</I>|<b>--sid-to-name</b> <I>SID</I>}<br><b>wbinfo</b> {<b>-p</b>|<b>--ping</b>}


title: PARAMETERS
content:
<b><b>-u</b>, <b>--users</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Lists all users known to Winbind, optionally for a specific domain.</I><br><br><br><b><b>-g</b>, <b>--groups</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Lists all groups known to Winbind, optionally for a specific domain.</I><br><br><br><b><b>-i</b> <I>USERNAME</I>, <b>--user-info</b> <I>USERNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Retrieves detailed information (SID, UID, GID, home directory, etc.) for a specified user.</I><br><br><br><b><b>-D</b>, <b>--domains</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Lists all domains that Winbind is aware of, including trusted domains.</I><br><br><br><b><b>-p</b>, <b>--ping</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Checks if the Winbind daemon is running and responsive.</I><br><br><br><b><b>--uid-to-sid</b> <I>UID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Converts a local Unix UID to its corresponding Windows SID.</I><br><br><br><b><b>--sid-to-uid</b> <I>SID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Converts a Windows SID to its corresponding local Unix UID.</I><br><br><br><b><b>--name-to-sid</b> <I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Converts a user or group name (e.g., DOMAIN\user) to its corresponding Windows SID.</I><br><br><br><b><b>--sid-to-name</b> <I>SID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Converts a Windows SID to its corresponding user or group name.</I><br><br><br><b><b>-t</b>, <b>--trusts</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Displays a list of all domain trusts known to Winbind.</I><br><br><br><b><b>--online-status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Reports the current online status of the Winbind daemon.</I><br><br><br><b><b>--sequence</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Retrieves the current sequence number of the Winbind cache, useful for checking cache freshness.</I><br><br><br><b><b>--separator</b> <I>CHAR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specifies the character used to separate fields in the output, overriding the default backslash.</I><br><br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Increases the verbosity of the output, providing more detailed information.</I><br><br>


title: DESCRIPTION
content:
<b>wbinfo</b> is a command-line utility used to query the Winbind daemon for information about users, groups, and trusts from a Windows domain, typically Active Directory. It's an integral part of the Samba suite, allowing Linux/Unix systems to integrate seamlessly into Windows environments.<br><br><b>wbinfo</b> can retrieve lists of users and groups, resolve SIDs to UIDs/GIDs and vice versa, check domain trust relationships, and verify the status of the Winbind daemon itself. It's often used by system administrators for troubleshooting user authentication, group memberships, and name resolution issues in environments where Samba and Winbind are configured to provide Windows domain services. It provides a programmatic interface to the information Winbind caches or retrieves from domain controllers.


title: CAVEATS
content:
<b>wbinfo</b> relies on the <b>winbindd</b> daemon being properly configured and running. If <b>winbindd</b> is not running or misconfigured, <b>wbinfo</b> commands will fail or provide incorrect results. Information returned by <b>wbinfo</b> is often cached by Winbind, meaning it might not immediately reflect the latest changes on the domain controller. To force a cache refresh, administrators might need to restart <b>winbindd</b> or use specific <b>net</b> commands (e.g., <b>net cache flush</b>). For very large domains, listing all users or groups can generate a significant amount of output and consume resources.


title: TROUBLESHOOTING TOOL
content:
<b>wbinfo</b> is invaluable for diagnosing issues related to user authentication, group membership, and name resolution in Samba/Winbind environments. By querying cached information or direct domain controller lookups, it helps verify Winbind's connectivity and data consistency.


title: SCRIPTING UTILITY
content:
Its simple, parseable output makes <b>wbinfo</b> suitable for use in shell scripts. Administrators often leverage <b>wbinfo</b> in scripts to automate tasks such as listing domain users, checking user existence, or mapping SIDs.


title: HISTORY
content:
<b>wbinfo</b> is a component of the Samba suite, which began in 1992 as a free software implementation of the SMB/CIFS networking protocol. As Windows networks evolved, especially with the introduction of Active Directory, Samba adapted to provide robust integration. <b>wbinfo</b> emerged as a crucial utility alongside the Winbind daemon to facilitate seamless user and group management, authentication, and name resolution between Unix-like systems and Windows domains. Its development has mirrored the advancements in Samba's Active Directory integration capabilities, becoming an indispensable tool for cross-platform network administration.


title: SEE ALSO
content:
<I>smbclient(1)</I><br>, <I>net(8)</I><br>, <I>id(1)</I><br>, <I>getent(1)</I><br>, <I>samba(7)</I><br>, <I>winbindd(8)</I>


title: SYNOPSIS
content:
<b>wbmptopbm</b> [<i>-v</i>] [<i>wbmfile</i>]<br><br><i>wbmfile</i>: Optional path to the input WBMP file. If omitted, input is read from standard input.


title: PARAMETERS
content:
<b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying information about the WBMP file being processed, such as its dimensions and type.<br><br>


title: DESCRIPTION
content:
<b>wbmptopbm</b> is a utility from the Netpbm package designed to convert images from the Wireless Bitmap (WBMP) format to the Portable Bitmap (PBM) format. WBMP is a monochrome image format primarily used in Wireless Application Protocol (WAP) applications, common in older mobile phone environments. The command reads a WBMP file from either a specified file path or standard input if no file is provided. It then processes this input and writes the resulting PBM image data to standard output.<br><br>PBM is a simple, plain-text format for black-and-white images, easily viewable and convertible to other image formats using Netpbm tools. This tool is essential for working with legacy WAP image assets or integrating them into modern image processing workflows via the flexible Netpbm suite.


title: CAVEATS
content:
WBMP is an older, monochrome image format, primarily associated with WAP and early mobile internet. <b>wbmptopbm</b> specifically handles this format; for other image types (like color images or more common formats like JPEG, PNG), different Netpbm conversion tools are required. The output is always a PBM (monochrome) file, as WBMP itself is a black-and-white format.


title: STANDARD INPUT/OUTPUT BEHAVIOR
content:
By default, <b>wbmptopbm</b> reads the WBMP image data from standard input (<i>stdin</i>) if no <i>wbmfile</i> argument is provided. The converted PBM image data is always written to standard output (<i>stdout</i>). This allows for easy piping of data between commands, for example: <br><br><code>curl http://example.com/image.wbmp | wbmptopbm > output.pbm</code>


title: HISTORY
content:
<b>wbmptopbm</b> is an integral part of the Netpbm project, a comprehensive suite of graphics programs designed for converting and manipulating various image formats. The Netpbm toolkit evolved from the original PBMPlus package, created by Jef Poskanzer in the late 1980s. As new image formats emerged, Netpbm adapted by adding utilities like <b>wbmptopbm</b> to support them. Its inclusion reflects the need to process images from specific domains, such as the Wireless Application Protocol (WAP) era, ensuring that even niche or legacy formats could be integrated into the wider Linux and Unix image processing ecosystem. The command's longevity is a testament to Netpbm's modular design and its commitment to universal image format interoperability.


title: PARAMETERS
content:
<b><b>-c</b>, <b>--bytes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the byte counts. This counts the exact number of bytes in each input file.<br><br><b><b>-m</b>, <b>--chars</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the character counts. For multi-byte character encodings (like UTF-8), this can differ from the byte count.<br><br><b><b>-l</b>, <b>--lines</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the newline counts. This effectively counts the number of lines in each input file.<br><br><b><b>-w</b>, <b>--words</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the word counts. Words are defined as non-zero-length strings separated by whitespace.<br><br><b><b>-L</b>, <b>--max-line-length</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the maximum display width of a line. This measures the number of columns required to display the longest line.<br><br><b><b>--files0-from=<i>F</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads input from the files specified by NUL-terminated names in file <i>F</i>. Useful for processing a large number of files listed by another command (e.g., <b>find -print0</b>).<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
The <b>wc</b> command, short for "word count", is a fundamental Linux utility used to count newlines, words, and bytes (or characters) in files or standard input. By default, when invoked without any options, <b>wc</b> displays all three counts (lines, words, bytes) for each specified file, followed by a total summary if multiple files are provided. Its versatility makes it invaluable for various tasks, from quickly checking the size of log files to counting entries in a list, or even determining the length of text in shell scripts. It's often used in conjunction with other commands via pipes, for instance, to count the number of lines output by <b>grep</b> or <b>ls</b>. Understanding <b>wc</b>'s options allows users to tailor its output to specific needs, making it a powerful tool for text processing and data analysis.


title: CAVEATS
content:
The definition of a 'word' by <b>wc</b> is any sequence of non-whitespace characters, separated by whitespace. This might not always align with linguistic definitions of a word.<br>The <b>-c</b> (bytes) and <b>-m</b> (characters) options yield different results for files containing multi-byte characters (e.g., UTF-8 encoded text). <b>-c</b> counts the raw bytes, while <b>-m</b> counts the actual characters.<br>On some older systems, the default behavior might differ slightly, or certain options might not be available, especially regarding character counting.


title: STANDARD INPUT USAGE
content:
When no <i>FILE</i> is specified, or when <i>FILE</i> is given as a single hyphen (<i>-</i>), <b>wc</b> reads from standard input. This makes it highly effective in pipelines, allowing it to process the output of other commands. For example, <i>ls -l | wc -l</i> would count the number of files and directories listed by <i>ls -l</i>.


title: MULTIPLE FILE PROCESSING
content:
When multiple files are provided as arguments, <b>wc</b> processes each file individually, displaying the counts for each one. After processing all files, it provides a final 'total' line, summarizing the counts across all input files. This is very useful for getting combined statistics from a group of related files.


title: HISTORY
content:
The <b>wc</b> command has been a standard utility in Unix-like operating systems since the early days of Unix. It dates back to at least Version 1 AT&T Unix. Its simplicity and utility have ensured its continued presence in modern systems, typically as part of the GNU Core Utilities, a collection of essential command-line tools.


title: PARAMETERS
content:
<b>-d, --dev-file <device></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the watchdog device file, e.g., <i>/dev/watchdog</i>. Overrides the default or configuration file setting.<br><br><b>-p, --pid-file <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the PID file used by the watchdog daemon. Useful if <i>watchdogd</i> is running with a non-standard PID file.<br><br><b>-c, --config-file <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file for <i>watchdogd</i>. Note that <i>wdctl</i> itself uses this to connect, not to configure <i>watchdogd</i> directly.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the execution of certain commands, overriding safety checks.<br><br><b>-n, --no-action</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints what action would be performed without actually executing it. Useful for dry runs.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the command's execution.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a short help message and exits.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for <i>wdctl</i> and exits.<br><br><b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Queries and displays the current status of the watchdog daemon, including its health, timeout, and last ping time.<br><br><b>settimeout <seconds></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the watchdog timeout to the specified number of <i>seconds</i>. The watchdog daemon will reset the system if it does not receive a ping within this period.<br><br><b>ping</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a 'keep-alive' ping to the watchdog daemon, instructing it to refresh its internal timer for the hardware watchdog.<br><br><b>gettimeout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and displays the currently configured watchdog timeout value in seconds.<br><br><b>getbootavg</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the system load average when the system last booted. Requires <i>watchdogd</i> to be configured to capture this.<br><br><b>gettemp</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and displays the current CPU temperature if <i>watchdogd</i> is configured to monitor it.<br><br><b>gettempwarn</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the temperature warning threshold configured for the watchdog daemon.<br><br><b>gettempradio</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the temperature shutdown (reboot) threshold configured for the watchdog daemon.<br><br><b>settempwarn <temp></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the temperature warning threshold to <i>temp</i> degrees Celsius. The watchdog daemon may log warnings if this is exceeded.<br><br><b>settempradio <temp></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the temperature shutdown (reboot) threshold to <i>temp</i> degrees Celsius. The system will reboot if this temperature is exceeded.<br><br>


title: DESCRIPTION
content:
<i>wdctl</i> is a command-line utility used to interact with the Linux watchdog daemon, <i>watchdogd</i>. A watchdog timer is a hardware or software timer used to detect and recover from computer malfunctions. If the system stops responding, the watchdog timer will automatically reboot the system, preventing extended downtime. <br><br><i>wdctl</i> allows system administrators to query the current status of the watchdog timer, set its timeout period, or perform other control operations. It can check if the watchdog daemon is alive, verify its configured timeout, and even read sensor data like CPU temperature if configured in <i>watchdogd</i>. This tool is crucial for monitoring the health and ensuring the reliability of critical systems where uninterrupted operation is paramount. It communicates with <i>watchdogd</i> via its control interface, typically through a Unix domain socket.


title: CAVEATS
content:
<i>wdctl</i> requires the <i>watchdogd</i> daemon to be running and accessible, usually with root privileges. It interacts with <i>watchdogd</i> via an IPC mechanism (Unix domain socket or shared memory), not directly with the hardware watchdog device. Incorrectly configuring or using watchdog timers can lead to unintended system reboots.


title: WATCHDOG DEVICE FILE
content:
The Linux kernel exposes hardware watchdog timers through a character device, typically <i>/dev/watchdog</i>. <i>watchdogd</i> opens and "pings" this device periodically to prevent a system reboot. If <i>watchdogd</i> fails to ping the device within the configured timeout, the hardware timer will expire, and the system will automatically reboot.


title: PRIVILEGES
content:
Many <i>wdctl</i> commands, particularly those that modify settings (e.g., <i>settimeout</i>) or query sensitive information (e.g., temperature), require root privileges to execute successfully, as they interact with system-level processes and hardware interfaces.


title: HISTORY
content:
The concept of a watchdog timer dates back to early computing to ensure system reliability by automatically recovering from malfunctions. In Linux, the <i>watchdogd</i> daemon implements this functionality, primarily interacting with hardware watchdog timers. <i>wdctl</i> was developed as a complementary utility to provide a simple command-line interface for querying and controlling the running <i>watchdogd</i> instance, making it easier for administrators to monitor and manage system resilience. Its development has closely tracked that of <i>watchdogd</i>, focusing on providing accessible control over its features.


title: PARAMETERS
content:
<b>-w chars, --word-separators=chars</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies characters that delimit words. By default, includes spaces, tabs, and newlines.<br><br><b>-i, --ignore-case</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores differences in case when comparing words.<br><br><b>-x chars, --ignore-boundary-chars=chars</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores specified characters if they appear at the beginning or end of a word.<br><br><b>-y chars, --ignore-all-chars=chars</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores specified characters anywhere within words or between words.<br><br><b>-t, --terminal</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces colored and underlined output, even if standard output is not a terminal.<br><br><b>--auto-terminal</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to guess if output should be colored/underlined based on whether stdout is a TTY.<br><br><b>-p, --page</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Paginates output through 'less' or the defined PAGER environment variable.<br><br><b>-s, --no-deleted</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of words deleted from the first file.<br><br><b>-n, --no-inserted</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of words inserted into the second file.<br><br><b>--diff-program=PROG</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative 'diff' program (e.g., 'diff -u') to use for comparison instead of the default.<br><br><b>--avoid-wraps</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to format output to avoid line wrapping, especially with long lines.<br><br><b>--statistics</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs statistics about the changes, such as the number of words changed, added, or deleted.<br><br>


title: DESCRIPTION
content:
<b>wdiff</b> is a powerful utility designed to compare two files at the word level, offering a more granular difference analysis than the traditional <b>diff</b> command. Instead of comparing line by line, <b>wdiff</b> identifies and highlights specific words that have been changed, added, or deleted between the two input files.<br><br>It achieves this by transforming the input files into a format where each word resides on its own line, then leveraging a standard <b>diff</b> program to find the line-based differences, and finally translating these differences back to the original word context. The output typically presents deleted words enclosed in <i>[-...-]</i> and inserted words in <i>{+...+}</i>, or using colors and underlining for terminal display. This word-centric comparison is particularly useful for text documents, source code, or prose where minor edits within lines are common and a full line difference might be too broad.


title: CAVEATS
content:
<b>wdiff</b> is essentially a wrapper script around the standard <b>diff</b> utility, which means its performance and capabilities are inherently tied to the underlying <b>diff</b> program. It creates temporary files internally, which can be an overhead for extremely large files. Its definition of a "word" might not always align with specific linguistic or programming contexts, requiring careful use of the <i>--word-separators</i> option. While it attempts to handle various character encodings, complex multi-byte character sets might sometimes lead to unexpected results.


title: EXIT STATUS
content:
<b>wdiff</b> typically returns an exit status of 0 if no differences were found, 1 if differences were found, and 2 if an error occurred. This behavior mirrors that of the underlying <b>diff</b> utility.


title: CUSTOMIZING OUTPUT
content:
<b>wdiff</b> allows extensive customization of its output format using options like <i>--old-line-format</i>, <i>--new-line-format</i>, and <i>--unchanged-line-format</i>. These options let users define how deleted, inserted, and unchanged words are displayed, often using escape sequences for colors and other text attributes, providing a highly flexible visual output.


title: HISTORY
content:
<b>wdiff</b> has been a part of the GNU utilities for a long time, evolving as a specialized tool for textual comparison. Its implementation as a front-end script leveraging <b>diff</b> allows it to benefit from the robustness and efficiency of <b>diff</b> while providing a more granular word-level analysis. It fills a niche for users who need to identify subtle changes within lines, which <b>diff</b> alone cannot provide without additional post-processing. Its development has focused on enhancing output clarity and providing flexible word definition options.


title: SYNOPSIS
content:
<b>webpack</b> [<I>entry</I>] [<I>options</I>]<br><b>webpack</b> <I>serve</I> [<I>options</I>]<br><b>webpack</b> <I>watch</I> [<I>options</I>]


title: PARAMETERS
content:
<b>--config <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a webpack configuration file. Defaults to 'webpack.config.js'.<br><br><b>--mode <mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable webpack's built-in optimizations for a given environment (e.g., 'development', 'production', 'none').<br><br><b>--watch, -w</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Watch files for changes and recompile automatically on modification.<br><br><b>--json, -j</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print webpack statistics in JSON format, useful for programmatic analysis.<br><br><b>--stats <preset></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preset for the stat output (e.g., 'minimal', 'normal', 'verbose', 'errors-only').<br><br><b>--serve</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the webpack-dev-server, providing a development server with live reloading.<br><br><b>--env <env></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass environment variables to the webpack configuration function.<br><br><b>--hot</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Hot Module Replacement (HMR) for faster development cycles.<br><br><b>--progress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print compilation progress to the console during the build process.<br><br><b>--profile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print compilation profile data, useful for analyzing build performance.<br><br>


title: DESCRIPTION
content:
<i>webpack</i> is an open-source JavaScript module bundler. Its primary purpose is to bundle JavaScript files for usage in a browser, but it can also transform, bundle, or package nearly any resource or asset. It takes modules with dependencies and generates static assets representing those modules, enabling efficient deployment. <i>webpack</i> is highly configurable and extensible through <b>loaders</b> (for pre-processing files) and <b>plugins</b> (for custom build steps). It's widely used in modern front-end development to optimize assets, implement code splitting, enable Hot Module Replacement (HMR), and perform various build optimizations, crucial for large-scale web applications.


title: CAVEATS
content:
Requires Node.js and a package manager (npm or yarn) to be installed. <br>The extensive configuration options can lead to a steep learning curve for newcomers. <br>Build performance is highly dependent on configuration and project complexity.


title: CORE CONCEPTS: LOADERS AND PLUGINS
content:
<b>Loaders</b> transform files (e.g., TypeScript to JavaScript, SASS to CSS) before they are added to the bundle. <b>Plugins</b> are more powerful, allowing customization of webpack's compilation process for optimization, asset management, and more.


title: CONFIGURATION FILE
content:
<i>webpack</i> primarily relies on a JavaScript configuration file, typically named <I>webpack.config.js</I>, where all build settings, entry points, output paths, loaders, and plugins are defined.


title: HISTORY
content:
<i>webpack</i> was originally created by Tobias Koppers and first released in 2012. It gained significant traction around 2015-2016, becoming a cornerstone of modern JavaScript development, particularly with the rise of single-page applications and frameworks like React. Subsequent major versions (webpack 2, 3, 4, 5) introduced significant improvements, including performance enhancements, tree-shaking, and zero-configuration defaults (webpack 4), solidifying its position as a dominant build tool for web assets.


title: SYNOPSIS
content:
<b>webpmux</b> [<I>options</I>] <I>input_webp</I> <b>-o</b> <I>output_webp</I><br><b>webpmux</b> <b>-get</b> <I>type</I> <I>input_webp</I> <b>-o</b> <I>output_file</I><br><b>webpmux</b> <b>-set</b> <I>type</I> <I>source_file</I> <I>input_webp</I> <b>-o</b> <I>output_webp</I><br><b>webpmux</b> <b>-frame</b> <I>frame_options</I>... <b>-o</b> <I>output_webp</I>


title: PARAMETERS
content:
<b><b>-h</b>, <b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a concise help message with available options.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>webpmux</b> version number.<br><br><b><b>-v</b>, <b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the operation's progress.<br><br><b><b>-o</b> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file path for the processed WebP image or extracted data.<br><br><b><b>-get</b> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts a specific chunk from the input WebP file. <I>type</I> can be 'icc' (ICC profile), 'exif' (EXIF data), 'xmp' (XMP metadata), 'frame' (a specific frame from an animation), or 'alpha' (alpha channel).<br><br><b><b>-set</b> <I>type</I> <I>source_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets or replaces a specific chunk in the WebP file with data from <I>source_file</I>. <I>type</I> can be 'icc', 'exif', 'xmp', or 'alpha'.<br><br><b><b>-strip</b> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specific chunk from the WebP file. <I>type</I> can be 'icc', 'exif', 'xmp', or 'alpha'.<br><br><b><b>-frame</b> <I>file</I> [<I>options</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds an input WebP <I>file</I> as a frame to an animated WebP. This option can be used multiple times to add successive frames.<br>Sub-options include: <b>-duration</b> <I>ms</I> (frame duration), <b>-xy</b> <I>x</I> <I>y</I> (frame offset), <b>-blend</b> (blend with previous canvas), <b>-no_blend</b> (replace canvas), <b>-dispose</b> (dispose frame before next), <b>-no_dispose</b> (do not dispose).<br><br><b><b>-loop</b> <I>loops</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of times the animation should loop. A value of 0 means infinite looping.<br><br><b><b>-duration</b> <I>ms</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default duration for all frames in the animation, in milliseconds (ms). This can be overridden per-frame using <b>-frame</b>'s <b>-duration</b> option.<br><br><b><b>-bgcolor</b> <I>A,R,G,B</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the background color of the canvas for transparent pixels, in alpha-red-green-blue format (e.g., '255,0,0,0' for opaque black).<br><br><b><b>-minimize_size</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to optimize the output file size by adjusting animated WebP specific properties like frame disposal and blending methods.<br><br><b><b>-kmin</b> <I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum number of frames per key-frame group (for animated WebP inter-frame compression). Default is 3.<br><br><b><b>-kmax</b> <I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of frames per key-frame group (for animated WebP inter-frame compression). Default is 9.<br><br>


title: DESCRIPTION
content:
<b>webpmux</b> is a command-line utility from the <i>libwebp</i> project, designed for multiplexing WebP images. Its primary function is to combine multiple WebP images into an animated WebP file, allowing users to specify frame durations and loop counts. Beyond animation, <b>webpmux</b> is also invaluable for adding or extracting various types of metadata, such as ICC profiles, EXIF data, and XMP metadata, directly to or from WebP image files. It can also manage the alpha channel (transparency) within WebP images. This tool provides granular control over the WebP format, making it essential for advanced WebP manipulation beyond simple compression. It operates by taking an input WebP file (or multiple for animation) and an output file, applying the specified operations.


title: CAVEATS
content:
<b>webpmux</b> primarily operates on WebP formatted input files. Other image formats (like PNG, JPEG) must first be converted to WebP using tools like <b>cwebp(1)</b> or <b>img2webp(1)</b> before being used as frames for animation. When creating animations, ensuring consistent dimensions or carefully managing frame offsets with <b>-xy</b> is crucial to avoid unexpected visual artifacts. Processing very large numbers of frames or high-resolution images can be memory-intensive.


title: KEY USE CASES
content:
<b>webpmux</b> excels in several scenarios, providing fine-grained control over WebP files:<br>1. <i>Creating Animated WebP:</i> Combine a series of static WebP images into a single animated WebP file, with precise control over frame durations, looping, and canvas behavior.<br>2. <i>Embedding Metadata:</i> Add or update crucial metadata like ICC color profiles, EXIF data (e.g., camera settings), and XMP metadata (e.g., copyright information) directly into WebP images.<br>3. <i>Extracting Data Chunks:</i> Extract specific data chunks (metadata, alpha channel, or individual frames) from existing WebP files for inspection, modification, or reuse without affecting the image data itself.


title: HISTORY
content:
<b>webpmux</b> is an integral part of the <i>libwebp</i> library, a free, open-source library developed by Google. It was introduced to provide robust capabilities for manipulating the WebP container format, specifically addressing the need for animation support and the inclusion/extraction of metadata. Its development parallels the evolution of the WebP format itself, aiming to make WebP a more versatile and feature-rich image format for the web.


title: SYNOPSIS
content:
The <b>webstorm</b> command is primarily used to launch the JetBrains WebStorm IDE. It can also be used to open specific files or directories as projects, or to perform certain command-line operations.<br><br><b>Syntax:</b><br><b>webstorm</b> <i>[options] [path...]</i><br><br><b>Common Usage Examples:</b><br><b>webstorm</b><br><i>(Launches the IDE)</i><br><br><b>webstorm</b> <i>&lt;path/to/project&gt;</i><br><i>(Opens a directory as a project in WebStorm)</i><br><br><b>webstorm</b> <i>&lt;path/to/file.js&gt;</i><br><i>(Opens a specific file in the IDE)</i><br><br><b>webstorm --diff</b> <i>&lt;file1&gt; &lt;file2&gt;</i><br><i>(Compares two files using WebStorm's diff viewer)</i><br><br><b>webstorm --line</b> <i>&lt;line_number&gt; &lt;file&gt;</i><br><i>(Opens a file at a specific line number)</i>


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive list of available command-line options and their descriptions.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the WebStorm application version and build number.<br><br><b>--diff <i>&lt;path1&gt; &lt;path2&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares two specified files using WebStorm's powerful built-in diff viewer. Useful for reviewing code changes.<br><br><b>--merge <i>&lt;path1&gt; &lt;path2&gt; &lt;base&gt; &lt;output&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invokes WebStorm's merge tool to resolve conflicts between <i>&lt;path1&gt;</i> and <i>&lt;path2&gt;</i>, using <i>&lt;base&gt;</i> as the common ancestor and saving the result to <i>&lt;output&gt;</i>.<br><br><b><i>[path...]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more paths to files or directories. If a directory path is provided, WebStorm opens it as a project. If file paths are given, the files are opened in the current (or a new) IDE instance.<br><br><b>--line <i>&lt;number&gt; &lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the specified <i>&lt;file&gt;</i> and places the cursor at the given <i>&lt;number&gt;</i> line. This option requires a file path to be provided.<br><br><b>--new-window</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces WebStorm to open a new IDE window, even if an existing window is already open and could reuse the project.<br><br><b>--wait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes the command-line process wait until the WebStorm IDE instance (launched by this command) is closed. Useful for scripting and integrating with version control commit hooks.<br><br><b>--status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the status of the running WebStorm instance, indicating if it's active or not.<br><br><b>--no-splash</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the splash screen during the WebStorm IDE startup process.<br><br>


title: DESCRIPTION
content:
WebStorm is an <i>integrated development environment</i> (IDE) by JetBrains, specifically tailored for JavaScript, TypeScript, HTML, CSS, Node.js, and related web technologies. It provides a comprehensive set of tools for front-end and back-end web development, including intelligent code completion, on-the-fly error detection, powerful navigation, debugging tools, unit testing support, and seamless integration with version control systems like Git. The <b>webstorm</b> command, typically a shell script or symlink located in the installation's <b>bin</b> directory or linked into your system's PATH, is used to launch the graphical IDE. While primarily a <i>GUI application</i>, the command-line interface also offers functionalities like opening specific files or projects, comparing files (<b>--diff</b>), merging changes (<b>--merge</b>), and performing batch code inspections or formatting. It aims to boost developer productivity by offering a rich and intuitive environment for building modern web applications.


title: CAVEATS
content:
<ul><li>The <b>webstorm</b> command is not a standard Linux utility; it requires a prior installation of JetBrains WebStorm IDE.</li><li>The actual executable might be <b>webstorm.sh</b> or a symlink to it, usually found in the WebStorm installation's <b>bin</b> directory (e.g., <i>~/WebStorm-*/bin/webstorm.sh</i>) or linked into system PATH during installation.</li><li>As a full-featured IDE, WebStorm is a resource-intensive application, especially during startup or with large projects.</li><li>WebStorm is a commercial product; its use typically requires a paid license after a trial period.</li><li>Command-line options primarily facilitate launching the GUI, opening files/projects, or integrating with external tools (like version control for diff/merge); it's not designed for extensive headless operations (though some advanced features like inspection can run in headless mode via separate mechanisms).</li></ul>


title: HEADLESS OPERATIONS (INSPECT/FORMAT)
content:
While the main <b>webstorm</b> command is for GUI launch, JetBrains IDEs (including WebStorm) offer command-line tools for specific headless operations like code inspection and formatting. These are often executed via <b>inspect.sh</b> or <b>format.sh</b> scripts located in the IDE's <b>bin</b> directory, allowing for CI/CD integration or batch processing without launching the full GUI.


title: DESKTOP INTEGRATION
content:
Upon first launch or via a menu option ("Tools" -> "Create Command-Line Launcher" or "Create Desktop Entry"), WebStorm can create a symlink to its executable in a standard PATH location (e.g., <i>/usr/local/bin/webstorm</i>) and/or a <i>.desktop</i> file for easier launching from application menus in Linux desktop environments.


title: CONFIGURATION AND CACHING
content:
WebStorm stores user-specific configurations, plugins, and caches in dedicated directories, typically under <i>~/.config/JetBrains/WebStorm&lt;version&gt;</i> and <i>~/.cache/JetBrains/WebStorm&lt;version&gt;</i> on Linux. Troubleshooting often involves clearing these caches or configuration files.


title: HISTORY
content:
WebStorm was first released by JetBrains in 2009, emerging from the company's well-established line of integrated development environments like IntelliJ IDEA. It was specifically designed to cater to the rapidly evolving landscape of web development, focusing on technologies such as JavaScript, HTML, and CSS. Over the years, its development has closely followed and often pioneered support for new web standards and frameworks, including Node.js, TypeScript, Angular, React, Vue.js, and various build tools. Its evolution has centered on providing intelligent coding assistance, robust debugging capabilities, and seamless integration with the modern web development ecosystem, establishing itself as a leading professional IDE in the field.


title: SYNOPSIS
content:
<b>webtorrent</b> <i>[command]</i> <i>[options]</i> <i>[arguments]</i><br><br>Common commands:<br><b>webtorrent download</b> <i>[magnet_uri | .torrent_file | info_hash]</i> [<i>options</i>]<br><b>webtorrent seed</b> <i>[path/to/file_or_folder]</i> [<i>options</i>]<br><b>webtorrent info</b> <i>[magnet_uri | .torrent_file | info_hash]</i><br><b>webtorrent create</b> <i>[path/to/file_or_folder]</i> [<i>options</i>]


title: PARAMETERS
content:
<b><i>--help</i>, <i>-h</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays usage information and available options for the command.<br><br><b><i>--version</i>, <i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the installed WebTorrent CLI version number.<br><br><b><i>--path &lt;path&gt;</i>, <i>-o &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where downloaded files will be saved. Defaults to the current working directory.<br><br><b><i>--port &lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the peer listening port for incoming connections (default is 6881).<br><br><b><i>--upload-limit &lt;bytes/sec&gt;</i>, <i>--ul &lt;bytes/sec&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the maximum upload speed for the torrent to the specified rate in bytes per second.<br><br><b><i>--download-limit &lt;bytes/sec&gt;</i>, <i>--dl &lt;bytes/sec&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the maximum download speed for the torrent to the specified rate in bytes per second.<br><br><b><i>--files &lt;index | range&gt;</i>, <i>-s &lt;index | range&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific files to download from a multi-file torrent (e.g., '1' for the first file, '2-5' for files 2 through 5).<br><br><b><i>--stdout</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pipes the first file of the torrent directly to standard output, enabling streaming to other command-line tools or media players.<br><br><b><i>--quiet</i>, <i>-q</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all non-essential output, showing only critical errors.<br><br><b><i>--verbose</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose logging, providing more detailed operational output for debugging.<br><br><b><i>--keep-seeding</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the client to continue seeding the torrent even after the download has fully completed.<br><br><b><i>--remove</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the downloaded files from disk when the <b>webtorrent</b> command exits (primarily for download command).<br><br><b><i>--force</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces overwrite of existing files or directories without prompting for confirmation.<br><br>


title: DESCRIPTION
content:
<b>webtorrent</b> is a command-line interface (CLI) for WebTorrent, a peer-to-peer streaming torrent client written in JavaScript. It allows users to download and stream torrents directly from the terminal without fully downloading them first. The tool supports magnet links, .torrent files, and info hashes. Its key features include instant playback of media files while they are still downloading, thanks to its ability to connect with both traditional BitTorrent peers via TCP and browser-based WebRTC peers.<br><br>Beyond streaming, <b>webtorrent</b> can also seed local files and create new torrents, making it a versatile tool for sharing and consuming large media files. It provides options for managing bandwidth, selecting specific files within a multi-file torrent, and piping content directly to standard output for integration with other command-line tools and media players.


title: CAVEATS
content:
<b>webtorrent</b> relies on Node.js and npm for its execution environment, meaning these prerequisites must be installed on the system. While excellent for streaming, its performance for very large torrents or complex file management might not always match highly optimized native BitTorrent clients. Streaming capabilities often benefit from piping output to external media players like VLC or MPV for optimal playback.


title: WEBTORRENT DESKTOP APPLICATION
content:
In addition to the CLI, WebTorrent offers a full-featured desktop application. This GUI client provides an intuitive interface for streaming and downloading torrents, built upon the same core WebTorrent technology and offering a user-friendly experience for non-CLI users.


title: BROWSER INTEGRATION VIA WEBRTC
content:
A fundamental innovation of WebTorrent is its ability to connect directly to WebRTC peers. This means <b>webtorrent</b> can download and upload data with web browsers and other WebTorrent clients that support WebRTC, enabling new paradigms for distributed web applications and live content sharing.


title: STREAMING PLAYBACK WITH EXTERNAL PLAYERS
content:
The primary strength of <b>webtorrent</b> is its instant streaming capability. Users can effectively play video and audio content as it downloads by using the <i>--stdout</i> option and piping the output to media players like VLC, MPV, or other tools that can read from standard input, providing a seamless viewing or listening experience.


title: HISTORY
content:
WebTorrent was initiated by Feross Aboukhadijeh with the ambitious goal of bringing BitTorrent to the browser using WebRTC, enabling true peer-to-peer file transfer directly within web pages. The <b>webtorrent</b> command-line interface emerged as a natural extension, allowing the same innovative streaming and P2P capabilities to be utilized directly from the terminal. Its development has focused on instant playback and efficient resource management, setting it apart from traditional BitTorrent clients by prioritizing immediate access to content over full download completion. It has evolved to support connections with both browser-based (WebRTC) and traditional (TCP/uTP) BitTorrent peers.


title: SYNOPSIS
content:
weechat [<I>options</I>] [<I>server</I>:<I>port</I>]<br>weechat [<I>options</I>] <b>-d</b> | <b>--dir</b> <I>path</I><br>weechat [<I>options</I>] <b>-c</b> | <b>--config</b> <I>path</I><br>weechat [<I>options</I>] <b>-h</b> | <b>--help</b><br>weechat [<I>options</I>] <b>-v</b> | <b>--version</b>


title: PARAMETERS
content:
<b><b>-d</b>, <b>--dir</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an alternate data directory for WeeChat files (e.g., configurations, logs, scripts).<br><br><b><b>-c</b>, <b>--config</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an alternate configuration file instead of the default one in the data directory.<br><br><b><b>-t</b>, <b>--no-plugin</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start WeeChat without loading any plugins, useful for troubleshooting.<br><br><b><b>-q</b>, <b>--no-script</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start WeeChat without loading any scripts.<br><br><b><b>-r</b>, <b>--run-script</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run a specific script on startup.<br><br><b><b>-s</b>, <b>--server</b> <I>server</I>:<I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to a specific IRC server (and optionally port) on startup.<br><br><b><b>-p</b>, <b>--password</b> <I>password</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide a password for the server specified with <b>-s</b>.<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 WeeChat's version information and exit.<br><br>


title: DESCRIPTION
content:
WeeChat is a <b>free</b>, <b>fast</b>, <b>light</b>, and <b>extensible</b> chat client designed for command-line environments. It boasts a highly customizable text-based user interface (TUI), making it ideal for remote access via SSH or for users who prefer a minimalist interface. While primarily known for its robust IRC capabilities, WeeChat's functionality can be significantly extended through a powerful plugin architecture, enabling support for other protocols like Matrix, XMPP, and more. A key strength of WeeChat lies in its extensive scripting support, allowing users to write scripts in various languages such as Python, Perl, Ruby, Lua, Tcl, Scheme, and JavaScript to automate tasks, add new features, and tailor the client precisely to their needs. Features include nick completion, smart filtering, and a comprehensive script management system, making it a powerful and flexible choice for both casual and advanced chat users.


title: CAVEATS
content:
WeeChat's <b>text-based user interface</b> (TUI) can have a steep learning curve for users unfamiliar with terminal applications or complex keyboard shortcuts. Its extensive configuration options, while powerful, may also be overwhelming for beginners. Managing and troubleshooting plugins and scripts requires some technical understanding.


title: SCRIPTING SUPPORT
content:
WeeChat supports scripting in multiple languages, including Python, Perl, Ruby, Lua, Tcl, Scheme, and JavaScript. This allows users to extend functionality, automate tasks, and customize behavior extensively.


title: PLUGIN SYSTEM
content:
The core functionality of WeeChat can be extended through a powerful plugin system. Plugins enable support for various chat protocols beyond IRC (e.g., Matrix, XMPP via dedicated plugins), integration with external services, and additional features.


title: CLIENT-SERVER MODE
content:
WeeChat can run in a detached client-server mode, allowing multiple clients (e.g., different SSH sessions) to connect to the same running WeeChat instance, enabling persistent sessions even when the original terminal is closed (often used with tools like tmux or screen).


title: HISTORY
content:
WeeChat was initially started by Sébastien Helleu (FlashCode) in 2003, with the first stable version released in 2004. It began as a rewrite of an earlier IRC client, aiming for a more modern, lightweight, and extensible design. Over the years, it has undergone significant development, adding robust plugin support, comprehensive scripting capabilities, and a modular architecture. Its focus has consistently been on providing a highly customizable and efficient chat experience for advanced users, particularly within terminal environments.


title: PARAMETERS
content:
<b>-i <I>interface</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the wireless interface to use, which must be in monitor mode.<br><br><b>-a <I>AP_MAC</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the MAC address (BSSID) of the target Access Point.<br><br><b>-c <I>client_MAC</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the MAC address of an associated client on the target AP. Optional, but can speed up attacks.<br><br><b>-p <I>prefix</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a prefix for the generated capture files (e.g., <i>wesside-</i>).<br><br><b>-s <I>seconds</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the timeout in seconds for client association attempts.<br><br><b>-r <I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads packets from a specified pcap file instead of performing a live capture.<br><br><b>-w <I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes all captured packets to a specified pcap file.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information during the attack.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br>


title: DESCRIPTION
content:
<b>wesside-ng</b> is a powerful tool within the <b>aircrack-ng</b> suite designed to automate the process of cracking WEP encryption keys. It excels in "client-less" scenarios, where it attempts to obtain a WEP key without requiring an active client connected to the target access point.<br><br>It achieves this by combining various techniques from the <b>aireplay-ng</b> family, such as fake authentication, ARP request re-injection, and fragmentation attacks (ChopChop, Fragmentation) to generate sufficient Initialization Vectors (IVs). Once enough IVs are collected, it automatically passes them to <b>aircrack-ng</b> to deduce the WEP key. Its aim is to streamline and simplify WEP cracking for security assessments.


title: CAVEATS
content:
Requires the wireless interface to be in monitor mode (usually set up with <b>airmon-ng</b>).<br>Effectiveness depends on network activity and the specific WEP vulnerability being exploited.<br>WEP is an outdated and insecure encryption protocol; <b>wesside-ng</b> is primarily for auditing legacy systems or educational purposes.<br>Illegal to use on networks you do not own or have explicit permission to test.


title: CLIENT-LESS CRACKING
content:
<b>wesside-ng</b> is particularly known for its ability to perform "client-less" WEP key cracking. It attempts to generate ARP requests itself, or perform other active attacks like ChopChop/Fragmentation, even if no active client is connected to the target Access Point, making it effective in quiet network environments.


title: AUTOMATED WORKFLOW
content:
The tool automates a sequence of steps that a user would otherwise perform manually, including fake authentication, packet injection, IV collection, and finally, calling <b>aircrack-ng</b> to crack the key. This significantly reduces the complexity and time required for WEP key recovery.


title: HISTORY
content:
<b>wesside-ng</b> is a component of the <b>aircrack-ng</b> suite, a comprehensive set of tools for auditing wireless networks. It was developed to automate and simplify some of the more complex WEP cracking procedures that traditionally required manual execution of several <b>aircrack-ng</b> utilities in sequence. Its design focuses on efficiency and reducing the user's manual intervention during the key cracking process, building upon the foundational attacks pioneered by other tools in the suite.


title: PARAMETERS
content:
<b>--backend=<backend></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the display backend to use (e.g., <I>drm</I>, <I>x11</I>, <I>wayland</I>, <I>rdp</I>, <I>headless</I>).<br><br><b>--display=<name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the name of the <I>Wayland</I> display socket.<br><br><b>--width=<px>, --height=<px></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired width and height for the output in pixels.<br><br><b>--scale=<factor></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output scaling factor for high-DPI displays (e.g., 2 for retina displays).<br><br><b>--fullscreen</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <I>Weston</I> in fullscreen mode, typically on the first connected output.<br><br><b>--config=<file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to load instead of the default <I>weston.ini</I>.<br><br><b>--tty=<number></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <I>Weston</I> on the specified virtual terminal (requires <I>drm</I> backend).<br><br><b>--xwayland</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the <I>XWayland</I> compatibility layer, allowing <I>X11</I> applications to run under <I>Wayland</I>.<br><br><b>--idle-time=<seconds></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the idle time in seconds before the screen turns off or a screensaver activates.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <I>Weston</I> version and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a summary of command-line options.<br><br>


title: DESCRIPTION
content:
<i>Weston</i> is the reference implementation of a <i>Wayland</i> compositor, acting as a display server that implements the <i>Wayland</i> protocol. It serves as a testbed for new <i>Wayland</i> features and a valuable example for other compositors to build upon. <br><br>As a display server, <i>Weston</i> manages graphical output, input devices (keyboard, mouse, touch), and window placement for client applications. It can run on various backends, including <b>DRM</b> (Direct Rendering Manager) for native hardware access, <b>X11</b> (running within an <i>X</i> server), <b>Wayland</b> (nested compositor), <b>RDP</b> (Remote Desktop Protocol), and a <b>headless</b> mode for testing without a display. <br><br>While often used for development and debugging, <i>Weston</i> is a fully functional compositor capable of providing a complete desktop environment. It also includes several demo <i>Wayland</i> clients to showcase its capabilities.


title: CAVEATS
content:
Although a functional desktop environment, <I>Weston</I> is primarily designed as a reference and development tool for the <I>Wayland</I> protocol. Its default configuration might be minimal, requiring manual setup via <I>weston.ini</I> for advanced features. Performance and stability can vary depending on the chosen backend and hardware.


title: CONFIGURATION FILE (`WESTON.INI`)
content:
Most of <I>Weston</I>'s behavior, including outputs, input devices, desktop shell, and various modules, is configured through the <B>weston.ini</B> file, typically located in <I>$XDG_CONFIG_HOME/weston.ini</I> or <I>~/.config/weston.ini</I>. This file allows fine-grained control over the compositor's operation beyond command-line options.


title: BACKENDS
content:
<I>Weston</I> supports multiple "backends" which determine how it interacts with the underlying system for graphics and input. The choice of backend (e.g., <I>DRM</I> for native GPU access, <I>X11</I> for running in an existing <I>X</I> session, <I>Wayland</I> for nesting, or <I>RDP</I> for remote access) dictates its operational environment and capabilities.


title: HISTORY
content:
<I>Weston</I> was developed alongside the <I>Wayland</I> protocol itself, serving as its foundational reference implementation. Initiated by the original <I>Wayland</I> developers, it has continuously evolved to demonstrate the protocol's capabilities and serve as a crucial tool for testing new features, extensions, and hardware drivers within the <I>Wayland</I> ecosystem. Its development directly tracks the progress and adoption of <I>Wayland</I> as a modern display server.


title: SEE ALSO
content:
weston.ini(5): The configuration file for the <I>Weston</I> compositor., wayland(7): An overview of the <I>Wayland</I> display server protocol., Xorg(1): The traditional <I>X Window System</I> display server, which <I>Wayland</I> aims to supersede., gnome-shell(1): A popular desktop environment that can run as a <I>Wayland</I> compositor.


title: SYNOPSIS
content:
<code><b>wezterm</b> [OPTIONS] [COMMAND]</code><br><code><b>wezterm start</b> [OPTIONS]</code><br><code><b>wezterm cli</b> &lt;SUBCOMMAND&gt; [ARGS]</code>


title: PARAMETERS
content:
<b><code>--config &lt;FILE&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file to load instead of the default.<br><br><b><code>--font &lt;FONT&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override the default font family for the session.<br><br><b><code>--class &lt;CLASS&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a specific window class/resource name, useful for window manager rules.<br><br><b><code>--daemonize</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start the WezTerm multiplexer server in the background as a daemon.<br><br><b><code>--front-end &lt;BACKEND&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select the rendering backend for the UI (e.g., <code>OpenGL</code>, <code>WebGpu</code>).<br><br><b><code>--program &lt;PROGRAM&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the program to run in the initial terminal pane instead of the default shell.<br><br><b><code>--cwd &lt;DIR&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the current working directory for the initial pane.<br><br><b><code>--dimension &lt;COLSxROWS&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the initial window dimensions in columns and rows.<br><br><b><code>--tab-title &lt;TITLE&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the title for the initial tab opened.<br><br><b><code>--color-scheme &lt;SCHEME&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply a specific color scheme for the session.<br><br><b><code>--lua &lt;SCRIPT&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute a Lua script on startup, then exit. Useful for scripting tasks.<br><br><b><code>--hide-tab-bar</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hide the tab bar even if multiple tabs are open.<br><br><b><code>--hide-window-decorations</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hide native window decorations (title bar, borders), relying on WezTerm's own UI.<br><br>


title: DESCRIPTION
content:
WezTerm is a powerful, cross-platform terminal emulator written in Rust, leveraging GPU acceleration for exceptional performance and smooth rendering. It's designed to be highly customizable and extensible, offering features typically found in separate tools like terminal multiplexers (e.g., tmux or screen). WezTerm supports true color, font ligatures, Unicode, and various modern terminal capabilities.<br><br>A standout feature is its comprehensive Lua scripting API, allowing users to deeply customize keybindings, appearance, and automate complex workflows. It includes a built-in multiplexer, enabling splitting panes and managing tabs within a single window, and even connecting to remote multiplexer instances via SSH, providing a seamless multi-session experience. WezTerm aims to be a modern, fast, and feature-rich replacement for traditional terminal setups.


title: CAVEATS
content:
WezTerm's powerful Lua scripting for configuration and automation, while highly flexible, can have a learning curve for new users. As an actively developed project, new features and behaviors are frequently introduced, which occasionally might require adjustments to existing configurations.


title: SUBCOMMANDS
content:
WezTerm extends its functionality through several powerful subcommands beyond just starting the GUI:<br><ul><li><code><b>wezterm cli</b></code>: The command-line interface for interacting with a running WezTerm multiplexer server, used for managing panes, tabs, windows, and sending commands programmatically.</li><li><code><b>wezterm ssh</b></code>: Connects to a remote host via SSH, optionally launching a remote multiplexer server or connecting to an existing one.</li><li><code><b>wezterm connect</b></code>: Connects to a WezTerm multiplexer domain, which can be local or remote, enabling seamless session management.</li><li><code><b>wezterm ls-fonts</b></code>: Lists all fonts detected and available to WezTerm, useful for debugging and configuring font settings.</li></ul>


title: CONFIGURATION FILE
content:
WezTerm's primary configuration is done via a Lua script, typically located at <code>~/.config/wezterm/wezterm.lua</code> (or <code>%USERPROFILE%\.wezterm.lua</code> on Windows). This file allows for deep customization of nearly every aspect of the terminal, from keybindings and color schemes to font rendering, appearance, and multiplexer behavior, offering unparalleled flexibility.


title: HISTORY
content:
WezTerm was initiated by Wez Furlong, a prominent open-source developer with contributions to projects like Rust and MySQL. The first public commit to its GitHub repository dates back to August 2018. Furlong developed WezTerm to create a modern, high-performance terminal emulator that could address the limitations of older options. It was designed from scratch in Rust, prioritizing GPU acceleration, cross-platform compatibility, and extensive customizability through a Lua scripting interface. Its continuous development has integrated features like a built-in multiplexer and advanced rendering capabilities, solidifying its position as a leading modern terminal solution.


title: PARAMETERS
content:
<b><b>-c</b>, <b>--codec</b> <i>&lt;codec&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the video codec to use (e.g., <b>libx264</b>, <b>vp9</b>, <b>h264_nvenc</b>).<br><br><b><b>-f</b>, <b>--file-format</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output file container format (e.g., <b>mp4</b>, <b>mkv</b>, <b>webm</b>).<br><br><b><b>-g</b>, <b>--geometry</b> <i>&lt;WxH+X+Y&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the region of the screen to record, e.g., <b>1920x1080+0+0</b> for a full HD screen starting at top-left.<br><br><b><b>-F</b>, <b>--framerate</b> <i>&lt;fps&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the recording framerate in frames per second.<br><br><b><b>-D</b>, <b>--device</b> <i>&lt;device&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the audio input device to capture from (e.g., a <b>PipeWire</b> or <b>PulseAudio</b> source).<br><br><b><b>-a</b>, <b>--audio-codec</b> <i>&lt;codec&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the audio codec for encoding (e.g., <b>aac</b>, <b>opus</b>, <b>flac</b>).<br><br><b><b>-b</b>, <b>--bitrate</b> <i>&lt;bitrate&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target video bitrate, e.g., <b>5M</b> for 5 Mbit/s.<br><br><b><b>-x</b>, <b>--extra-opts</b> <i>&lt;opts&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes arbitrary extra options directly to the underlying <b>FFmpeg</b> process for input/output.<br><br><b><b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs a raw video stream without a container format.<br><br><b><b>--no-audio</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables audio recording entirely.<br><br><b><b>--no-pipewire</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>wf-recorder</b> to not use <b>PipeWire</b> for audio capture.<br><br><b><b>--pipewire-node</b> <i>&lt;node_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular <b>PipeWire</b> node ID for audio input.<br><br><b><b>--pixel-format</b> <i>&lt;fmt&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the pixel format for the encoded video (e.g., <b>yuv420p</b>).<br><br><b><b>--hw-accel</b> <i>&lt;api&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables hardware acceleration using a specified API (e.g., <b>cuda</b>, <b>vaapi</b>).<br><br><b><b>--preset</b> <i>&lt;preset&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses an encoding preset for the video codec (e.g., <b>ultrafast</b>, <b>fast</b>, <b>medium</b>) to balance speed and compression.<br><br><b><b>--crf</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Constant Rate Factor for quality-based encoding, applicable to codecs like <b>libx264</b>.<br><br><b><b>--2-pass</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables two-pass encoding for better quality at a given bitrate.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br>


title: DESCRIPTION
content:
<b>wf-recorder</b> is a screen recording utility specifically designed for <b>Wayland</b> compositors that implement the <b>wlroots</b> protocol, such as <b>Sway</b>, <b>Wayfire</b>, and others. It aims to be lightweight and efficient, providing a simple way to capture video and audio from your <b>Wayland</b> session. Unlike traditional <b>X11</b> screen recorders, <b>wf-recorder</b> leverages <b>Wayland's</b> direct rendering capabilities, often resulting in smoother captures and better performance.<br><br>It supports various video codecs and container formats, allowing users to choose settings that best suit their needs for quality and file size. Its primary use case is straightforward screen capture without the overhead of more complex broadcasting or streaming software, making it ideal for creating tutorials, demos, or simply recording desktop activity. A common usage example is: <b>wf-recorder -g</b> <i>1920x1080+0+0</i> <b>-F</b> <i>60</i> <b>output.mp4</b>


title: CAVEATS
content:
<b>Caveats</b>:<br><b>wf-recorder</b> requires a <b>wlroots</b>-based <b>Wayland</b> compositor (e.g., <b>Sway</b>, <b>Wayfire</b>) to function.<br>It relies on <b>FFmpeg</b> for all encoding and muxing tasks, which must be installed and accessible.<br>Audio recording typically requires a correctly configured <b>PipeWire</b> or <b>PulseAudio</b> setup.<br>It lacks advanced features such as live streaming, overlays, or complex scene management found in tools like <b>OBS Studio</b>.<br>There is no built-in graphical user interface; it is a command-line utility.


title: DEPENDENCIES
content:
<b>wf-recorder</b> primarily depends on <b>FFmpeg</b> for its core multimedia processing capabilities. For screen capture, it requires a <b>wlroots</b>-compatible <b>Wayland</b> compositor. Audio input typically relies on <b>PipeWire</b> or <b>PulseAudio</b> being correctly configured on the system.


title: COMBINING WITH SLURP
content:
For recording specific regions of the screen, <b>wf-recorder</b> is often used in conjunction with the <b>slurp(1)</b> utility. <b>slurp</b> allows users to interactively select a rectangular area, and its output (geometry string) can be piped directly into <b>wf-recorder</b>. An example command is: <b>slurp | wf-recorder -g $(cat) output.mp4</b>


title: HISTORY
content:
<b>wf-recorder</b> originated within the <b>Wayfire</b> project, a 3D <b>Wayland</b> compositor, to address the need for a simple, native screen recording tool specifically for <b>wlroots</b>-based <b>Wayland</b> environments. It was developed to fill a gap left by X11-centric recording solutions, aiming for efficient and direct integration with the <b>Wayland</b> ecosystem. Leveraging <b>FFmpeg</b> as its robust backend, it supports a wide array of audio and video codecs and container formats. Its ongoing development is community-driven, emphasizing a lightweight footprint and seamless operation within the <b>Wayland</b> desktop experience.


title: PARAMETERS
content:
<b><i>&lt;input_woff_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input WOFF font file from which the private data will be extracted.<br><br><b><i>&lt;output_pfa_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the converted private data will be saved in FontForge-compatible PFA format.<br><br>


title: DESCRIPTION
content:
<br><i>wftopfa</i> is a highly specialized utility typically distributed as part of the <b>FontForge</b> font editor suite. Its primary function is to extract and convert specific "top private" data blocks found within <b>Web Open Font Format (WOFF)</b> files into a format compatible with FontForge's internal representations, often a PostScript Font ASCII (PFA) format. This command is not a general-purpose font converter but rather a tool for advanced users, font developers, or designers who need to inspect, modify, or analyze the private, often vendor-specific, data embedded within WOFF fonts. It helps bridge the gap between the compact, web-optimized WOFF format and the detailed editing capabilities of FontForge, enabling granular control over complex font structures.


title: CAVEATS
content:
This command is very niche and not widely used by general Linux users. It requires the <b>FontForge</b> package to be installed on your system. Its primary purpose is for specific font development and analysis tasks, not for everyday font conversion. Due to its specialized nature, it may not have extensive command-line options beyond input and output files.


title: USAGE CONTEXT
content:
Users typically invoke <i>wftopfa</i> when they need to delve into the obscure parts of a WOFF font. This might include analyzing how a font was created, examining proprietary data embedded by the font designer or foundry, or attempting to repair or alter specific non-standard attributes of a WOFF file that are stored in its private blocks. It's an internal utility, often used by those who understand the intricacies of font file formats.


title: HISTORY
content:
<i>wftopfa</i> was developed as part of the <b>FontForge</b> project, an open-source font editor. Its inclusion reflects FontForge's commitment to supporting various font formats, including WOFF, which gained prominence for web typography. This utility likely emerged as the WOFF format matured, requiring tools to handle its specific internal structures, particularly the private data blocks often used for metadata or custom extensions by font vendors.


title: SYNOPSIS
content:
<b>wfuzz</b> <i>[options]</i> <b>-u</b> <i>&lt;url&gt;</i> <b>-z</b> <i>&lt;payload_source&gt;</i> <i>...</i><br><br>Example: <b>wfuzz -c -z wordlist,common.txt -u https://example.com/FUZZ</b><br>Example with multiple payloads: <b>wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -z file,/usr/share/wordlists/rockyou.txt -u "https://example.com/admin/FUZZ.php?user=admin&pass=FUZZ2"</b>


title: PARAMETERS
content:
<b><b>-u</b> <i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target URL for fuzzing. It must contain the <b>FUZZ</b> keyword (or <b>FUZZ<i>n</i></b> for multiple points) where payloads will be injected.<br><br><b><b>-z</b> <i>&lt;payload_source&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a payload source for the <b>FUZZ</b> keyword. Payloads can be from wordlists, numbers, character ranges, or custom generators.<br><br><b><b>--hc</b> <i>&lt;code&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides responses with specific HTTP status codes (e.g., 404, 500). Can be a comma-separated list or range.<br><br><b><b>--hh</b> <i>&lt;lines&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides responses with a specific number of lines in the content.<br><br><b><b>--hw</b> <i>&lt;words&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides responses with a specific number of words in the content.<br><br><b><b>--hl</b> <i>&lt;chars&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides responses with a specific number of characters (bytes) in the content.<br><br><b><b>--sc</b> <i>&lt;code&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only responses with specific HTTP status codes. Opposite of <b>--hc</b>.<br><br><b><b>--sh</b> <i>&lt;lines&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only responses with a specific number of lines. Opposite of <b>--hh</b>.<br><br><b><b>--sw</b> <i>&lt;words&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only responses with a specific number of words. Opposite of <b>--hw</b>.<br><br><b><b>--sl</b> <i>&lt;chars&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only responses with a specific number of characters. Opposite of <b>--hl</b>.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables colorized output for better readability in the terminal.<br><br><b><b>-X</b> <i>&lt;method&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the HTTP method to use for the request (e.g., GET, POST, PUT, DELETE).<br><br><b><b>-d</b> <i>&lt;data&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the data to send with POST requests. Can include <b>FUZZ</b> for injection into the POST body.<br><br><b><b>-H</b> <i>&lt;header&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds an HTTP header to the request (e.g., 'Cookie: foo=bar'). Can include <b>FUZZ</b> for fuzzing header values.<br><br><b><b>--req</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads an HTTP request from a specified file, allowing complex requests to be fuzzed.<br><br><b><b>--proxy</b> <i>&lt;host:port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Routes requests through an HTTP proxy for monitoring or bypassing restrictions.<br><br><b><b>--timeout</b> <i>&lt;seconds&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout for each HTTP request, preventing long waits for unresponsive servers.<br><br><b><b>--follow-redirects</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures <i>wfuzz</i> to automatically follow HTTP redirects (3xx responses).<br><br>


title: DESCRIPTION
content:
<b>wfuzz</b> is a powerful and versatile open-source web fuzzer designed for web application security testing. It automates the process of discovering hidden web content, testing for various vulnerabilities like SQL injection, cross-site scripting (XSS), directory traversal, and brute-forcing authentication mechanisms. <br><br><i>wfuzz</i> operates by injecting various payloads into specified points (marked with <b>FUZZ</b>) within an HTTP request. It supports multiple payload types, including wordlists, numbers, character ranges, and even custom generators. Its strength lies in its highly customizable filtering system, allowing users to hide or show responses based on HTTP status codes, response length, number of lines, words, or characters. This enables efficient identification of interesting responses amidst a large volume of requests. <i>wfuzz</i> also supports different HTTP methods, request headers, POST data, proxies, and authentication schemes, making it an indispensable tool for penetration testers and security researchers.


title: CAVEATS
content:
<i>wfuzz</i> can generate a large volume of requests, which might trigger Intrusion Detection/Prevention Systems (IDS/IPS) or cause denial of service (DoS) if not used carefully. Ethical considerations are paramount; always ensure you have explicit permission before using <i>wfuzz</i> against any system. Misuse can lead to legal consequences. It also requires a good understanding of HTTP and web application structure to be used effectively.


title: ETHICAL USAGE
content:
<i>wfuzz</i> is a powerful tool designed for security testing. Always ensure you have explicit, written permission from the system owner before conducting any scans or tests. Unauthorized use can lead to serious legal consequences and is unethical. Responsible usage involves respecting privacy, data integrity, and system availability.


title: FUZZ KEYWORD
content:
The <b>FUZZ</b> keyword (or <b>FUZZ<i>n</i></b> for multiple points) is central to <i>wfuzz</i>'s operation. It marks the injection points in the URL, headers, or POST data where payloads will be inserted. Understanding where to place <b>FUZZ</b> is crucial for effective testing and maximizing the tool's capabilities.


title: HISTORY
content:
<i>wfuzz</i> was initially developed by Carlos Arce (xmendez) and first released around 2006. It quickly gained popularity within the penetration testing community due to its flexibility and effectiveness in automating web vulnerability discovery. Its development has been community-driven, with continuous updates and improvements over the years, solidifying its position as a staple tool in many security professionals' arsenals. Its design, focusing on the <b>FUZZ</b> keyword and powerful filtering, set a standard for subsequent web fuzzing tools.


title: SYNOPSIS
content:
The <i>wg</i> command generally follows a pattern of specifying an action, an interface, and then optional parameters. Below are common usage patterns:<br><br><b>Displaying Configuration:</b><br><i>wg show [interface]</i><br><i>wg showall</i><br><i>wg showconf [interface]</i><br><br><b>Setting Configuration:</b><br><i>wg set [interface] [parameters...]</i><br><i>wg addconf [interface] [config_file]</i><br><i>wg strip [interface]</i><br><br><b>Key Generation:</b><br><i>wg genkey</i><br><i>wg pubkey</i><br><i>wg genpsk</i>


title: PARAMETERS
content:
<b>show <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current configuration and status of a specific WireGuard interface.<br><br><b>showall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the configuration and status of all active WireGuard interfaces on the system.<br><br><b>showconf <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the configuration of a specified interface in a format compatible with <i>wg-quick(8)</i> configuration files.<br><br><b>set <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies the parameters of an existing WireGuard interface. This command is followed by specific configuration options.<br><br><b>addconf <interface> <config-file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds or updates interface and peer configurations from a specified configuration file.<br><br><b>strip <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all peers from a specified WireGuard interface, leaving only the interface's own settings.<br><br><b>genkey</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a new WireGuard private key and prints it to standard output.<br><br><b>pubkey</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Derives the public key from a private key read from standard input and prints it.<br><br><b>genpsk</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a new WireGuard pre-shared key (PSK) and prints it to standard output.<br><br><b>listen-port <port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the UDP listening port for the WireGuard interface.<br><br><b>private-key <key></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the private key for the WireGuard interface. The key can be provided directly or read from a file.<br><br><b>peer <public-key></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates the configuration block for a specific peer, identified by its public key.<br><br><b>remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used within a peer configuration block to remove that specific peer from the interface.<br><br><b>endpoint <ip:port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the public IP address and port of a peer. Useful for static peer configurations.<br><br><b>persistent-keepalive <interval></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a persistent keepalive interval in seconds for a peer. Keeps the NAT mapping alive.<br><br><b>allowed-ips <CIDR></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated list of IP addresses (CIDR format) that will be routed through this peer.<br><br><b>preshared-key <key></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a pre-shared key for the current peer, adding an optional layer of symmetric encryption.<br><br><b>txqueue-len <length></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the transmit queue length for the WireGuard interface.<br><br>


title: DESCRIPTION
content:
<i>wg</i> is the command-line utility for configuring and managing <B>WireGuard</B> network interfaces. It allows administrators to set up secure VPN tunnels by defining parameters such as private and public keys, listening ports, and peer configurations. Through <i>wg</i>, users can add, remove, and modify peers, specify allowed IP addresses for routing, and configure persistent keepalives to maintain connections through NATs. The command interacts directly with the WireGuard kernel module (or userspace implementation) to apply these settings, establishing a highly performant and cryptographically strong VPN. While <i>wg</i> handles the WireGuard-specific cryptographic and peer settings, network interface creation and IP address assignment are typically managed by other standard Linux networking tools like <i>ip</i>.<br><br>Its design prioritizes simplicity and ease of configuration, reflecting WireGuard's goal of being a lean and efficient VPN solution.


title: CAVEATS
content:
The <i>wg</i> command typically requires root privileges (or equivalent capabilities like <i>CAP_NET_ADMIN</i>) to modify system-wide network configurations.<br><br>It exclusively handles the WireGuard-specific protocol parameters. The creation and deletion of the WireGuard network interface itself (e.g., <i>wg0</i>) and its IP address assignment are performed using the separate <i>ip</i> command (e.g., <i>ip link add wg0 type wireguard</i> and <i>ip addr add 10.0.0.1/24 dev wg0</i>).<br><br>For <i>wg</i> to function, the WireGuard kernel module must be loaded, or a userspace implementation like <i>wireguard-go</i> must be running and available.


title: INTERACTION WITH <I>IP</I> COMMAND
content:
It's crucial to understand that <i>wg</i> configures the WireGuard protocol's parameters (keys, peers, ports), but the network interface itself and its IP addressing are managed by the <i>ip</i> command. For example, you first create the interface with <i>ip link add type wireguard</i>, then configure it with <i>wg set</i>, and finally assign an IP address and bring it up with <i>ip addr add</i> and <i>ip link set up</i>.


title: KEY MANAGEMENT AND SECURITY
content:
The security of your WireGuard setup heavily relies on the proper management of private and public keys. <i>wg genkey</i> and <i>wg pubkey</i> are provided to facilitate secure key generation. Private keys should always be kept strictly confidential and never shared, while public keys are safely exchanged with peers to establish encrypted tunnels. Additionally, pre-shared keys (generated with <i>wg genpsk</i>) can be used for an extra layer of symmetric cryptography.


title: HISTORY
content:
WireGuard was initially developed by Jason A. Donenfeld, with its first public release around 2016. The project gained significant attention for its modern cryptographic design, simplicity, and high performance. The <i>wg</i> command-line utility has been integral to its ecosystem since its early days, providing the primary interface for users to configure WireGuard tunnels directly. A major milestone was its inclusion into the Linux kernel mainline in 2020, solidifying its status as a robust and native VPN solution for Linux systems.


title: SYNOPSIS
content:
<b>wg-quick</b> <I>command</I> <I>interface</I> [<I>conf_file</I>]<br><b>wg-quick</b> <I>strip</I> <I>conf_file</I><br><b>wg-quick</b> <I>add-peer</I> <I>interface</I> <I>public_key</I> [<I>endpoint</I>] [<I>allowed_ips</I>]<br><b>wg-quick</b> <I>remove-peer</I> <I>interface</I> <I>public_key</I>


title: PARAMETERS
content:
<b>up <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Brings up the specified WireGuard interface using its configuration file (e.g., /etc/wireguard/<interface>.conf). This command configures the interface, IP addresses, routes, and DNS.<br><br><b>down <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Brings down the specified WireGuard interface, removing its configuration, IP addresses, and routes.<br><br><b>save <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current WireGuard interface configuration (including dynamically added peers) to its default configuration file, typically /etc/wireguard/<interface>.conf.<br><br><b>strip <conf_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads a WireGuard configuration file and prints a version of it to standard output with all private keys removed. Useful for sharing public configurations.<br><br><b>add-peer <interface> <public_key> [<endpoint>] [<allowed_ips>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamically adds a new peer to a currently active WireGuard interface. It takes the peer's public key, an optional endpoint, and optional allowed IPs.<br><br><b>remove-peer <interface> <public_key></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamically removes an existing peer from a currently active WireGuard interface identified by its public key.<br><br>


title: DESCRIPTION
content:
wg-quick is a high-level command-line utility designed to simplify the setup and management of WireGuard VPN interfaces. It acts as a convenient wrapper around the lower-level wg command and other network configuration tools like ip(8). Its primary purpose is to quickly bring up, bring down, and manage WireGuard tunnels using simple INI-style configuration files, typically located in /etc/wireguard/.<br><br>Rather than requiring users to manually configure network interfaces, IP addresses, routing rules, and DNS settings, wg-quick automates these steps based on the contents of a specified configuration file. This makes deploying WireGuard incredibly straightforward, whether setting up a client connection, a VPN server, or a peer-to-peer link. It handles the details of adding and removing wg interfaces, assigning IP addresses, setting up routes for AllowedIPs, and even configuring DNS resolvers if specified in the configuration. It is an essential tool for practical WireGuard deployment.


title: CAVEATS
content:
wg-quick requires root privileges to operate, as it modifies network interfaces and routing tables. <br>It primarily relies on configuration files located in /etc/wireguard/. If no explicit file is provided, it assumes <interface>.conf in this directory. <br>The up command can overwrite existing network configurations (like DNS servers via resolvconf) and might interfere with network managers if not used carefully. <br>By default, wg-quick up only configures an interface until the next reboot; persistence requires enabling the associated systemd service (e.g., wg-quick@<interface>.service).


title: CONFIGURATION FILE FORMAT
content:
WireGuard configuration files for <b>wg-quick</b> use an INI-style format, typically named <i><interface>.conf</i> and placed in <i>/etc/wireguard/</i>. They consist of two main sections:<br>1.  <b>[Interface]</b>: Defines parameters for the local WireGuard interface. Common parameters include: <i>PrivateKey</i>, <i>ListenPort</i>, <i>Address</i>, <i>DNS</i>, <i>MTU</i>, <i>Table</i>, <i>PreUp</i>, <i>PostUp</i>, <i>PreDown</i>, <i>PostDown</i>. These are used to set up the local side of the VPN tunnel.<br>2.  <b>[Peer]</b>: Defines parameters for a remote WireGuard peer. Multiple <b>[Peer]</b> sections can exist. Common parameters include: <i>PublicKey</i>, <i>Endpoint</i>, <i>AllowedIPs</i>, <i>PersistentKeepalive</i>. These specify how to connect to and route traffic for remote peers.


title: SYSTEMD INTEGRATION
content:
To make <b>wg-quick</b> configurations persistent across reboots on systemd-based systems, a service unit <i>wg-quick@.service</i> is provided. You can enable and start a WireGuard interface at boot by running: <br><b>sudo systemctl enable wg-quick@<interface>.service</b> <br><b>sudo systemctl start wg-quick@<interface>.service</b> <br>Replace <i><interface></i> with the name of your WireGuard interface (e.g., <i>wg0</i>). This automatically brings up the interface using its configuration file, ensuring your VPN is active after system startup.


title: HISTORY
content:
wg-quick was developed by Jason A. Donenfeld, the creator of WireGuard, specifically to address the need for a user-friendly and robust interface to the WireGuard kernel module. It was designed from the outset to simplify the complex network configurations required for VPNs, making WireGuard more accessible for general users and system administrators. Its development closely paralleled that of the WireGuard protocol itself, aiming to provide a 'quick' setup experience as implied by its name. It became an integral part of the WireGuard suite upon its initial release and subsequent inclusion in the Linux kernel.


title: SYNOPSIS
content:
<b>wget2</b> [<i>OPTION</i>]... [<i>URL</i>]...<br><b>wget2</b> --input-file=<i>FILE</i> [<i>OPTION</i>]...


title: PARAMETERS
content:
<b>--continue / -c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resumes getting a partially downloaded file, continuing from where it left off.<br><br><b>--output-file=FILE / -O FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes all downloaded documents to a specified <i>FILE</i> instead of saving them to their original filenames.<br><br><b>--directory-prefix=PREFIX / -P PREFIX</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets <i>PREFIX</i> as the directory where all retrieved files and directories will be saved.<br><br><b>--input-file=FILE / -i FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads URLs to download from a local or external <i>FILE</i>, with one URL per line.<br><br><b>--recursive / -r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on recursive retrieving, following links within documents to download an entire website.<br><br><b>--level=NUMBER / -l NUMBER</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum depth of recursion for recursive downloads (e.g., <b>-l 1</b> for current page only).<br><br><b>--user-agent=AGENTSTRING / -U AGENTSTRING</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Identifies <b>wget2</b> as <i>AGENTSTRING</i> to the web server, mimicking a specific browser or client.<br><br><b>--no-check-certificate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables server certificate validation. Use with caution as it can expose you to security risks.<br><br><b>--quiet / -q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most of <b>wget2</b>'s output, making it run silently.<br><br><b>--verbose / -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on verbose output, displaying detailed information about the download process (default behavior).<br><br><b>--version / -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for <b>wget2</b> and exits.<br><br><b>--help / -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of command-line options and exits.<br><br>


title: DESCRIPTION
content:
<b>wget2</b> is a free, non-interactive network utility for downloading files from the Web. It is a modern successor to the classic <b>wget</b>, re-engineered from the ground up for improved performance, enhanced security, and robust support for contemporary internet protocols. <b>wget2</b> efficiently retrieves files using HTTP/1.1, HTTP/2, HTTPS, and FTP.<br><br>Key features include highly parallelized downloads leveraging multi-core processors, support for modern compression algorithms like zstd and brotli, and compatibility with Metalink, Gnutella, and BitTorrent magnet links. It offers superior speed for large-scale downloads or retrieving numerous small files compared to its predecessor. Like <b>wget</b>, it can work in the background, retrieve content recursively, resume broken downloads, and operate through proxies, making it an incredibly powerful and versatile tool for web scraping, site mirroring, and general file acquisition needs.


title: CAVEATS
content:
<b>wget2</b> is not as widely pre-installed on Linux distributions as <b>wget</b>, often requiring manual installation. While its syntax is largely compatible with <b>wget</b>, some options may behave differently, and new features might require specific syntax. As an actively developed project, its features and stability may evolve.


title: PERFORMANCE BENEFITS
content:
<b>wget2</b> is engineered for high performance, utilizing multiple connections for a single file download and parallelizing multiple file downloads concurrently. This design makes it significantly faster than its predecessor in scenarios with high-bandwidth connections or when downloading a large number of files.


title: MODERN PROTOCOL SUPPORT
content:
It includes native support for cutting-edge web technologies such as HTTP/2, TLS 1.3, and advanced compression algorithms like Brotli and zstd. Furthermore, <b>wget2</b> supports specialized protocols and link types including Metalink, Gnutella, and BitTorrent magnet links, providing a more comprehensive and up-to-date downloading experience.


title: HISTORY
content:
<b>wget2</b> emerged as a successor project to the widely used <b>wget</b> utility, aiming to modernize its codebase and capabilities. Development began around 2014-2015, driven by the need for better performance, native support for newer protocols like HTTP/2, and improved security features that were challenging to integrate into the aging <b>wget</b> codebase. It was rewritten primarily in C and C++, focusing on parallelism, multi-threading, and efficient handling of high-speed network connections. While <b>wget</b> remains ubiquitous, <b>wget2</b> offers a more robust and significantly faster alternative for contemporary web downloading tasks, especially where performance and modern protocol support are critical.


title: SYNOPSIS
content:
<b>whatis</b> [<i>OPTION</i>...] <i>KEYWORD</i>...<br>This displays the basic usage. <i>KEYWORD</i> represents the manual page names to search for. Options modify the search behavior.


title: PARAMETERS
content:
<b><i>KEYWORD</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more manual page names to search for. The command will display the one-line description for each exact match found in the database.<br><br><b><b>-s</b> <i>section,...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search only the specified manual <i>section(s)</i>. Sections can be given as a comma-separated list (e.g., '1,8').<br><br><b><b>--sections</b> <i>section,...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Long option for <b>-s</b>.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not truncate output to the terminal width. Useful for displaying full descriptions that might otherwise be cut off.<br><br><b><b>--long</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Long option for <b>-l</b>.<br><br><b><b>-w</b> <i>string,...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interpret patterns as wildcards. For example, '<i>whatis -w ls*</i>' might match '<i>ls</i>' and '<i>lsattr</i>'.<br><br><b><b>--wildcard</b> <i>string,...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Long option for <b>-w</b>.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interpret patterns as regular expressions. This allows for more complex search patterns, similar to <i>apropos</i>'s default behavior.<br><br><b><b>--regex</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Long option for <b>-r</b>.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Long option for <b>-V</b>.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<b>whatis</b> is a fundamental Linux command used to quickly look up a brief description of a specified command, system call, or file. It searches the <b>NAME</b> section of the system's manual pages database for exact matches of the keywords provided. When a match is found, <b>whatis</b> displays the one-line description associated with that manual page entry. This command is particularly useful when you know the precise name of a command but need a quick reminder of its function without opening the full <i>man</i> page. It relies on a pre-built database (often created and updated by <i>mandb</i>) of manual page information. Unlike <i>apropos</i>, which searches for substrings and typically uses more flexible matching, <b>whatis</b> performs a precise, full-word match, making it ideal for targeted lookups.


title: CAVEATS
content:
The <b>whatis</b> command relies on a pre-built database of manual page descriptions. If this database is not present or is out of date, <b>whatis</b> may return no results or incomplete information. The database is typically created or updated using the <b>mandb</b> command (e.g., '<i>sudo mandb</i>'). Additionally, <b>whatis</b> performs an exact, full-word match by default, meaning it will not find partial matches. For substring or more flexible searches, consider using <b>apropos</b> or <b>whatis</b> with the <b>-r</b> (regex) or <b>-w</b> (wildcard) options.


title: DATABASE REQUIREMENT
content:
For <b>whatis</b> to function correctly, an up-to-date manual page index database must exist. This database is typically built and maintained by the <b>mandb</b> command. If you install new manual pages or notice <b>whatis</b> not returning expected results, running '<i>sudo mandb</i>' is often the first troubleshooting step.


title: MATCHING BEHAVIOR
content:
<b>whatis</b> performs a full-word search by default. For example, '<i>whatis cat</i>' will match the 'cat' command, but '<i>whatis c</i>' will not. To search for partial matches or use more advanced patterns, employ the <b>-w</b> (wildcard) or <b>-r</b> (regex) options, which makes its behavior closer to that of <b>apropos</b>.


title: HISTORY
content:
The <b>whatis</b> command has been a staple utility in Unix-like operating systems for decades, providing a quick way to get a summary of commands. Historically, it often functioned by searching a plain text file (<i>whatis.db</i> or similar) containing one-line descriptions. Modern implementations, especially those integrated with the <i>man-db</i> package, leverage more robust databases (like GDBM or Berkeley DB) that are indexed by the <b>mandb</b> utility. In many contemporary Linux distributions, <b>whatis</b> is often a symbolic link to or a functional alias of <b>apropos</b>, with its default behavior configured to perform exact word matches, thus maintaining its distinct purpose while sharing underlying search logic.


title: PARAMETERS
content:
<b><i>-u</i>, <i>--url</i> &lt;target_url&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target URL to scan for WAF detection. This is a mandatory parameter.<br><br><b><i>-t</i>, <i>--timeout</i> &lt;seconds&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the connection timeout in seconds for HTTP requests. Default is typically 10 seconds.<br><br><b><i>-r</i>, <i>--retries</i> &lt;number&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of retries for failed HTTP requests. Default is usually 3.<br><br><b><i>-p</i>, <i>--proxy</i> &lt;proxy_string&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures an HTTP/S proxy for all requests (e.g., <i>http://127.0.0.1:8080</i>). Useful for debugging or routing through specific networks.<br><br><b><i>-a</i>, <i>--agents</i> &lt;file_path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a file containing a list of user-agent strings to cycle through during requests, helping to evade simple user-agent blocking.<br><br><b><i>-v</i>, <i>--verbose</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying more detailed information about the detection process and responses.<br><br><b><i>--debug</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing even more detailed technical information for troubleshooting.<br><br><b><i>--list-wafs</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all the WAF technologies that <b>whatwaf</b> is capable of detecting.<br><br>


title: DESCRIPTION
content:
The <b>whatwaf</b> command is a Python-based utility primarily used in web application security assessments and penetration testing to identify and fingerprint Web Application Firewalls (WAFs). WAFs are security solutions that protect web applications from various attacks, such as SQL injection, cross-site scripting (XSS), and denial-of-service (DoS).<br><br><b>whatwaf</b> operates by sending a series of specifically crafted HTTP requests to a target URL and analyzing the responses for characteristic patterns, error messages, or headers that are indicative of a particular WAF technology. It helps security professionals understand the defense mechanisms in place, which is crucial for planning further testing or for tailoring exploits. The tool supports various detection techniques and can identify a range of commercial and open-source WAF products.


title: CAVEATS
content:
<b>whatwaf</b> is not a standard Linux command and typically requires Python and pip for installation. Its WAF detection relies on fingerprinting and may not always be 100% accurate, especially against highly customized or obfuscated WAFs. <br><br>Users should ensure they have proper authorization before scanning any target website, as unauthorized scanning may be illegal.


title: INSTALLATION
content:
<b>whatwaf</b> can typically be installed using pip, the Python package installer:<br><i>pip install whatwaf</i><br><br>Ensure Python 3 is installed on your system before attempting installation.


title: TYPICAL USAGE
content:
To scan a target URL for WAFs:<br><i>whatwaf -u https://example.com</i><br><br>To use a proxy and verbose output:<br><i>whatwaf -u https://example.com -p http://127.0.0.1:8080 -v</i>


title: HISTORY
content:
Developed by security researchers and open-source contributors, <b>whatwaf</b> emerged as a specialized tool for automated WAF identification. It gained popularity within the penetration testing community for its dedicated focus, complementing broader vulnerability scanners by providing targeted WAF intelligence.


title: PARAMETERS
content:
<b><targets></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target URL, IP address, CIDR range, or file containing targets to scan.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying more details during the scanning process.<br><br><b><b>-a</b>, <b>--aggression</b> <i><level></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the aggression level (0-4), where higher levels increase the scan depth and time.<br><br><b><b>--input-file</b> <i><file></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads targets from a specified file, with one target per line.<br><br><b><b>--log-json</b> <i><file></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs the scan results to a specified file in JSON format.<br><br><b><b>--log-xml</b> <i><file></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs the scan results to a specified file in XML format.<br><br><b><b>--user-agent</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a custom User-Agent string for the HTTP requests made during the scan.<br><br><b><b>--plugins</b> <i><list></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific plugins to run (e.g., 'WordPress,Apache').<br><br><b><b>--no-plugins</b> <i><list></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables specific plugins from running during the scan.<br><br><b><b>--follow-redirects</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically follows HTTP redirects to new locations.<br><br>


title: DESCRIPTION
content:
<b>whatweb</b> is an open-source web scanner that identifies various web technologies used on websites. It employs numerous plugins to recognize content management systems (CMS), blogging platforms, JavaScript libraries, web servers, and other components. By analyzing HTML, HTTP headers, cookies, and other attributes, <b>whatweb</b> helps security professionals, developers, and system administrators gain insights into the technology stack of web applications. It supports multiple target inputs, including single URLs, IP addresses, CIDR ranges, and file lists, and offers diverse output formats for flexible reporting and integration into other tools.


title: CAVEATS
content:
Scanning websites without explicit permission can be illegal or unethical. Always obtain proper authorization before performing any scans.<br><br>While generally accurate, <b>whatweb</b> might occasionally misidentify technologies or miss very new/obscure ones. High aggression levels or scanning a large number of targets can be time-consuming and resource-intensive, and may also trigger intrusion detection/prevention systems (IDS/IPS).


title: OUTPUT FORMATS
content:
<b>whatweb</b> supports various output formats beyond brief and verbose, including XML, JSON, and Greappable (suitable for piping to other tools). This flexibility allows for easy integration into automated workflows, detailed reporting, or custom script processing.


title: PLUGIN SYSTEM
content:
The modular plugin system is a core feature of <b>whatweb</b>. It allows for easy extension and customization, enabling users to create or modify plugins to identify specific technologies relevant to their unique requirements. This extensibility contributes significantly to its power and versatility.


title: HISTORY
content:
<b>whatweb</b> was initially created by Andrew Horton (AJK) and first publicly released around 2009-2010. It quickly became a popular tool in the cybersecurity community for its efficiency in web technology identification. Since its inception, it has been actively maintained and regularly updated with new plugins and features to keep pace with the ever-evolving web technology landscape.


title: SYNOPSIS
content:
<b>where</b> [ <b>-apmqsz</b> ] <I>name</I> ...<br><br>This syntax primarily applies to the <I>zsh</I> built-in <I>where</I> command. If <I>where</I> is an alias in your shell, its synopsis will depend on the command it aliases (e.g., `whereis` or `which`).


title: PARAMETERS
content:
<b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display all matching executables found in the <I>PATH</I>, instead of just the first one.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search only in the directories specified by the current <I>PATH</I> environment variable.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the shell's command hash table to find matches. This reflects what the shell would actually execute.<br><br><b>-q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quiet mode. Suppresses all output; only the exit status indicates success (0) or failure (non-zero).<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only the first match found. This is the default behavior if <B>-a</B> is not specified.<br><br><b>-z</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use the shell's command hash table; search directories explicitly.<br><br>


title: DESCRIPTION
content:
<I>where</I> is not a standard standalone utility found universally across all Linux distributions. Instead, it is most commonly encountered as a built-in command in the <I>Z shell</I> (<I>zsh</I>). In <I>zsh</I>, <I>where</I> functions similarly to `which -a` or `type -a`, displaying all occurrences of a specified command found within the directories listed in the user's <I>PATH</I> environment variable. If <I>where</I> is present in other shells like <I>Bash</I>, it is typically a user-defined alias or a shell function, often configured to invoke `whereis` or `which -a`. Its primary purpose is to help users identify the exact location of command executables, useful for debugging PATH issues or ensuring the correct version of a command is being invoked.


title: CAVEATS
content:
<I>where</I> is not a universal standalone command across all Linux systems. Its availability and behavior depend heavily on the shell being used:<br><br><I>• In Z shell (zsh), where is a built-in command with specific options as described.</I><br><I>• In other shells like Bash, where is generally not a built-in or standard utility. If available, it's typically implemented as a user-defined alias or shell function, often pointing to whereis or which -a. Consequently, its exact functionality and accepted options may vary significantly based on how it's defined. Always check your shell's configuration (`type where` or `alias where`) if you're unsure.</I>


title: TYPICAL USAGE
content:
When available, <I>where</I> is commonly used to find the full path of a command. For example, `where python` would show you the location of the Python executable. This is particularly useful when multiple versions of a program might exist on your system, and you need to verify which one is being invoked based on your <I>PATH</I>.


title: HISTORY
content:
The <I>where</I> command primarily originated as a built-in feature of the <I>Z shell</I> (<I>zsh</I>), providing a convenient way to locate executable files. Its functionality is similar to earlier utilities like `which` but often offers additional options or a slightly different default behavior (e.g., showing all matches by default in some configurations or implicitly similar to `which -a`). While not a part of the original Unix toolset, its utility led to its adoption or emulation in other shell environments, often via aliases or functions to provide a consistent experience for users familiar with its behavior in <I>zsh</I> or other operating systems (like the Windows `where` command).


title: SYNOPSIS
content:
whereis [<i>options</i>] [-bmsu] [-B <i>dir</i> ...] [-M <i>dir</i> ...] [-S <i>dir</i> ...] <i>command</i> ...


title: PARAMETERS
content:
<b>-b</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search only for binaries.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search only for manual sections.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search only for sources.<br><br><b>-u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for unusual entries, meaning those that do not have one entry of each type requested. For example, <b>whereis -m -u ls</b> will list files that have no man page associated with them.<br><br><b>-B <i>dir</i> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the search for binaries to the specified directories. Multiple directories can be listed.<br><br><b>-M <i>dir</i> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the search for man pages to the specified directories. Multiple directories can be listed.<br><br><b>-S <i>dir</i> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the search for sources to the specified directories. Multiple directories can be listed.<br><br><b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Terminates the last directory list and signals the beginning of program names. This is useful when the last list of directories might be mistaken for program names.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List the effective search paths that <b>whereis</b> is using for binaries, man pages, and sources. This option is helpful for debugging search path issues.<br><br>


title: DESCRIPTION
content:
The <b>whereis</b> command is used to locate the binary, source, and manual page files for a specified command name. It operates by searching a fixed set of standard system locations for Linux programs, as well as considering paths defined in environment variables like <i>PATH</i> and <i>MANPATH</i>. This utility is particularly useful for quickly finding where a program's executable, its underlying source code, or its documentation resides on the filesystem. It's a handy tool for system administrators, developers, or anyone needing to understand software installations or troubleshoot issues related to file locations.<br><br>Unlike commands like <b>which</b>, which primarily finds the executable that would be run from your shell, or <b>find</b>, which performs general file searches, <b>whereis</b> is optimized for finding program-related components. It can provide multiple file types (binaries, sources, and man pages) in a single query, making it efficient for specific program-centric lookups rather than general file searches.


title: CAVEATS
content:
<b>whereis</b> primarily relies on a set of hardcoded standard paths and configured environment variables (like <i>PATH</i> and <i>MANPATH</i>). It might not locate programs installed in highly non-standard or custom directories unless those directories are explicitly specified using the <i>-B</i>, <i>-M</i>, or <i>-S</i> options.<br><br>It does not perform a general filesystem search like <b>find</b>, nor does it resolve shell aliases or functions like <b>which</b>. Its scope is limited to finding program-related components based on its predefined search logic.


title: SEARCH PATHS
content:
<b>whereis</b> operates by looking in a number of built-in, hard-coded standard directories typically used for binaries (e.g., <i>/bin</i>, <i>/usr/bin</i>, <i>/usr/local/bin</i>), manual pages (e.g., <i>/usr/share/man</i>), and source code (e.g., <i>/usr/src</i>). These default search locations can be augmented or overridden by using the <i>-B</i>, <i>-M</i>, and <i>-S</i> options, allowing users to specify additional directories to search for each type of file. The <i>PATH</i> and <i>MANPATH</i> environment variables also contribute to the overall search scope.


title: DISTINCTION FROM 'WHICH'
content:
While both <b>whereis</b> and <b>which</b> help locate commands, they serve different purposes. <b>which</b> specifically identifies the exact executable that would be invoked by your shell if you typed the command name, respecting the current <i>PATH</i> environment variable, aliases, and shell functions. In contrast, <b>whereis</b> provides a broader lookup, aiming to find <i>all</i> associated files (binary, source, and manual pages) for a given command, often searching a wider set of standard system directories, without considering shell-specific behaviors like aliases.


title: HISTORY
content:
<b>whereis</b> has been a fundamental Unix utility for many decades, providing a direct and efficient method to locate program components. Its core functionality, focused on finding binaries, sources, and man pages, has remained remarkably consistent across various Unix-like operating systems. While modern package managers handle installation and tracking, <b>whereis</b> continues to be a quick, low-level tool for direct file location queries on a system, often used in scripting and system administration tasks.


title: SYNOPSIS
content:
<pre>which [<i>options</i>] <i>command ...</i></pre><br><i>command ...</i>: One or more command names to locate.


title: PARAMETERS
content:
<b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints all matching executables found in the PATH, rather than just the first one.<br><br><b>-s, --silent</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses output; only the exit status indicates success or failure. Useful for scripting.<br><br><b>-n, --no-alias, --no-functions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs which not to search for shell aliases or shell functions. It only searches for executable programs.<br><br>


title: DESCRIPTION
content:
The <b>which</b> command is a utility on Unix-like operating systems used to locate the executable file associated with a given command. It performs its search by examining the directories listed in the user's <b>PATH</b> environment variable, in the order they appear. When a match is found, <b>which</b> prints the full path to the executable and then exits. If no match is found, it typically returns a non-zero exit status.<br><br>This command is particularly useful for determining which specific version of a command will be executed when multiple versions might exist in different <b>PATH</b> directories, or for identifying the physical location of an executable for scripting or debugging purposes. It primarily searches for external commands and typically does not identify shell built-in commands, functions, or aliases, which are handled by commands like <b>type</b> or <b>command</b>.


title: CAVEATS
content:
<b>which</b> only searches for executable programs in the directories specified by the <b>PATH</b> environment variable. It typically does not find:<br><ul><li>Shell built-in commands (e.g., <b>cd</b>, <b>echo</b> in some shells).</li><li>Shell functions defined within the current shell session.</li><li>Shell aliases, unless the specific <b>which</b> implementation supports it (and usually needs to be explicitly enabled or is default, which is rare for the <b>which</b> utility itself, <b>type</b> is better for this).</li><li>Executable files not located in a directory listed in <b>PATH</b>, including those in the current working directory (<b>.</b>) unless <b>.</b> is explicitly part of the <b>PATH</b>.</li></ul>The behavior and available options of <b>which</b> can vary slightly between different Unix-like systems and <b>which</b> implementations.


title: EXIT STATUS
content:
The <b>which</b> command returns an exit status of 0 if all specified commands were found, and a non-zero status (typically 1) if at least one command was not found. This makes it suitable for use in shell scripts to check for the presence of commands.


title: PATH ENVIRONMENT VARIABLE
content:
<b>which</b> is entirely dependent on the <b>PATH</b> environment variable. This variable contains a colon-separated list of directories where the shell looks for executable commands. The order of directories in <b>PATH</b> determines the precedence; <b>which</b> reports the first executable found in the search order.


title: HISTORY
content:
The <b>which</b> command originated in the C shell (<b>csh</b>) and was later adopted as a standalone utility due to its widespread utility in determining the exact executable invoked by a given command name. Its primary purpose has always been to provide a clear path to an executable based on the shell's <b>PATH</b> search mechanism. Over time, different implementations have emerged, some with additional options (like GNU <b>which</b>) to handle more complex scenarios or provide more detailed control over the search, though its core functionality remains consistent across systems.


title: PARAMETERS
content:
<b><I>condition_commands</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more commands whose exit status determines whether the loop continues. If the last command in this sequence exits with status 0 (success), the loop body is executed. Otherwise, the loop terminates.<br><br><b><I>loop_body_commands</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The block of commands that will be executed repeatedly as long as the <I>condition_commands</I> evaluate to true. These commands are executed sequentially.<br><br>


title: DESCRIPTION
content:
The <b>while</b> loop is a fundamental control flow construct in Linux shell scripting. It enables the repeated execution of a block of commands as long as a specified condition remains true. The condition is determined by the exit status of a command or a series of commands: an exit status of 0 (success) causes the loop to continue, while any non-zero exit status (failure) terminates the loop.<br><br>This construct is essential for automation tasks requiring iteration, such as processing lines from files, waiting for processes to complete, or continuous monitoring. The loop first evaluates the condition. If true, the commands within the loop body are executed. After execution, the condition is re-evaluated, and the process repeats until the condition becomes false.


title: CAVEATS
content:
<b>Infinite Loops:</b> Care must be taken to ensure that the loop's condition eventually becomes false; otherwise, an infinite loop will occur, consuming system resources. Always include logic within the loop body or condition that can alter the condition's outcome.<br><br><b>Subshell Execution with Pipes:</b> When a <b>while</b> loop is part of a pipeline (e.g., 'cat file | while read line; do ...; done'), the <b>while</b> loop often runs in a subshell. This means that any variables modified inside the loop will not be available or retain their changes outside the pipeline. To avoid this, consider process substitution (e.g., 'while read line; do ...; done < file') or redirecting input directly.


title: COMMON USE CASES
content:
<b>Processing Files Line-by-Line:</b> A common pattern is 'while IFS= read -r line; do ...; done < file.txt' for safe and reliable line processing. <br><b>Waiting for Events:</b> Loops can be used to poll for a condition to become true, e.g., 'while ! pgrep my_process; do sleep 5; done'.<br><b>Reading User Input:</b> Continuously prompt for input until valid data is provided.


title: LOOP CONTROL
content:
Two commands can alter loop execution:<br><b>break:</b> Immediately terminates the innermost <b>while</b> loop and execution continues with the command following the <b>done</b> keyword.<br><b>continue:</b> Skips the rest of the current iteration of the innermost <b>while</b> loop and proceeds to the next iteration by re-evaluating the condition.


title: HISTORY
content:
The <b>while</b> loop is a fundamental control flow construct that originated with the Bourne Shell (sh) in Unix. It has been a core part of shell scripting since its inception and is available in virtually all modern Unix-like shells, including Bash, Zsh, Ksh, and Dash. Its design leverages the Unix philosophy of using command exit statuses for conditional logic, making it a robust and versatile tool for iterative tasks.


title: PARAMETERS
content:
<b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <i>-b -d -l -p -r -t -T -u</i>. Displays all available information.<br><br><b>-b, --boot</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the time of the last system boot.<br><br><b>-d, --dead</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints information about dead processes.<br><br><b>-H, --heading</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints column headings above the output, making it easier to read.<br><br><b>-i, --idle</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds the idle time to the output. A dot (<i>.</i>) indicates an idle time of less than one minute, while '<i>old</i>' signifies more than 24 hours.<br><br><b>-l, --login</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints system login processes, typically showing active login prompts.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only the hostname and user information associated with the standard input (stdin), effectively showing information about the current user.<br><br><b>-p, --process</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints active processes spawned by <i>init</i>.<br><br><b>-q, --count</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints all login names and the total number of users currently logged on, in a concise format.<br><br><b>-r, --runlevel</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current runlevel of the system.<br><br><b>-s, --short</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints only the user's name, line (TTY), and login time. This is the default output format.<br><br><b>-t, --time</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the time of the last system clock change.<br><br><b>-T, --mesg, --message</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds the user's message status. <i>+</i> indicates messages are allowed, <i>-</i> means disallows messages, and <i>?</i> means the status cannot be determined.<br><br><b>-u, --users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists users currently logged in, including their terminal, login time, and remote host.<br><br><b>am i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A common idiom to print information about the current user (yourself). This is functionally similar to using the <i>-m</i> option.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs version information and exits.<br><br>


title: DESCRIPTION
content:
The <b>who</b> command is a fundamental Unix-like utility designed to provide information about users currently logged into the system. It typically outputs essential details such as the user's login name, the terminal line (TTY) they are using, the time of their login, and optionally, the remote host from which they connected. Beyond current user sessions, <b>who</b> can also reveal system events like the last system boot time, changes in the system's runlevel, or details about dead processes. While <b>who</b> offers a quick and simple overview of active sessions, for more comprehensive data, such as users' current processes or detailed idle times, commands like <b>w</b> or <b>finger</b> are often employed. Its straightforward nature makes it an indispensable tool for quick system monitoring and user identification.


title: CAVEATS
content:
The <b>who</b> command primarily relies on system accounting files like <i>/var/run/utmp</i> (for current logins) and <i>/var/log/wtmp</i> (for historical logins). Inaccurate or incomplete information may result if these files are corrupted or not properly maintained by the system. It mainly tracks sessions associated with a TTY; graphical desktop sessions or certain SSH configurations might not always be fully or accurately represented. Idle times for SSH sessions can sometimes be misleading, depending on the client and server configurations.


title: DEFAULT OUTPUT FORMAT
content:
By default, when invoked without options, <b>who</b> displays three columns for each logged-in user: the user's login name, the terminal line (TTY) they are using, and the time of their login. For example: <br><i>user tty1 2023-10-27 08:30</i><br>If logged in from a remote host, the hostname or IP address may also be included in parentheses.


title: USING A SPECIFIC LOG FILE
content:
The <b>who</b> command can also be told to read from a specific login record file instead of the default <i>/var/run/utmp</i>. For instance, <b>who /var/log/wtmp</b> will display historical login/logout records, providing a different perspective on system activity.


title: HISTORY
content:
The <b>who</b> command has been a cornerstone of Unix and Unix-like operating systems since their inception. It originated as a basic utility for system administrators and users to quickly ascertain who was logged into a multi-user system. Its design is straightforward, primarily involving the parsing of system accounting files like <i>utmp</i> to retrieve current login information. As a component of the GNU Core Utilities, its implementation is standardized and widely available across virtually all Linux distributions, maintaining a consistent interface and behavior. The core functionality of <b>who</b> has remained largely unchanged, solidifying its role as a quick and reliable method for identifying active users on a system.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>--help</b> <br>Display a help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>--version</b> <br>Output version information and exit.<br><br>


title: DESCRIPTION
content:
<b>whoami</b> is a fundamental Linux command used to print the effective user ID name of the current user. It's a simple yet powerful tool for quickly determining which user account is currently executing commands. Unlike <b>logname</b>, which displays the user who <i>logged in</i> initially, <b>whoami</b> shows the user under whose privileges the current shell is operating. This distinction is crucial when using commands like <b>su</b> or <b>sudo</b> to temporarily switch user identities. For example, if you log in as <i>userA</i> and then use <b>su userB</b>, <b>whoami</b> will report <i>userB</i>, while <b>logname</b> would still report <i>userA</i>. It essentially tells you "who you are right now" in terms of your effective user ID. It is commonly used in scripts to check permissions or to log operations under the current user's context.


title: CAVEATS
content:
While <b>whoami</b> is straightforward, it's important to understand it reports the <i>effective</i> user ID, not necessarily the <i>original login</i> user ID. This can be different if <b>su</b> or <b>sudo</b> commands have been used to change the user context. For the original login name, <b>logname</b> might be more appropriate. For more detailed user and group information, <b>id</b> should be used.


title: EFFECTIVE VS. REAL USER ID
content:
<b>whoami</b> prints the effective user ID name, which is the identity under which the current process is running. This can differ from the real user ID (the user who originally logged in) if commands like <b>su</b> or <b>sudo</b> are used to change user privileges without initiating a full login shell.


title: SECURITY CONTEXT
content:
Understanding the output of <b>whoami</b> is critical in security contexts, as it directly indicates the permissions and privileges associated with the currently executing commands.


title: HISTORY
content:
The <b>whoami</b> command has been a standard part of Unix-like operating systems for a long time. In GNU/Linux systems, it is part of the GNU Coreutils package, which provides essential system utilities. Its simplicity and clear purpose have made it a ubiquitous command for quickly identifying the current user context, especially useful in shell scripting and interactive sessions. Its design primarily focuses on providing the effective user ID, reflecting the common need to know "who is executing this right now."


title: SYNOPSIS
content:
<b>whois</b> [<i>OPTIONS</i>] <i>OBJECT</i><br><b>whois</b> [<b>-h</b> <i>HOST</i>] [<i>OPTIONS</i>] <i>OBJECT</i><br><br><i>OBJECT</i> refers to the domain name (e.g., example.com), IP address (e.g., 203.0.113.45), or Autonomous System Number (e.g., AS12345) you wish to query.


title: PARAMETERS
content:
<b><b>-h</b> <i>HOST</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the WHOIS server <i>HOST</i> to connect to directly, bypassing automatic server discovery. This is useful when the default lookup doesn't find the correct server or for querying specific regional registries.<br><br><b><b>-p</b> <i>PORT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the specified <i>PORT</i> on the WHOIS server instead of the default port 43. This is rarely needed unless interacting with non-standard WHOIS services.<br><br><b><b>-Q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a &quot;<i>quick</i>&quot; lookup, instructing the server not to follow referrals to other WHOIS servers. This limits the query to the initial server, providing less comprehensive but faster results, often used for debugging or specific registry lookups.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs an <i>inverse</i> query, searching for objects (e.g., domain names) associated with a given value (e.g., an IP address). Support for inverse queries varies significantly among WHOIS servers and is often limited or disabled due to privacy concerns.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>whois</b> client and exits. Useful for verifying the installed version.<br><br>


title: DESCRIPTION
content:
The <b>whois</b> command is a client-side utility used to query distributed databases that store registration information for domain names, IP addresses, and Autonomous System Numbers (ASNs). When you execute <b>whois</b>, it connects to the appropriate WHOIS server &ndash; managed by domain registrars, regional internet registries (RIRs), or national internet registries (NIRs) &ndash; to retrieve publicly available data. This information typically includes the registrant's name, organization, contact details (often redacted for privacy), registration and expiration dates, name servers, and administrative/technical contacts. <b>whois</b> is an invaluable tool for network administrators, security researchers, and anyone needing to verify ownership, track domain history, or troubleshoot network issues. Its output can be critical for investigating phishing attempts, identifying website owners, or understanding IP address allocations. Due to the decentralized nature of WHOIS, the format and completeness of the returned data can vary significantly between different servers.


title: CAVEATS
content:
<b>Data Accuracy and Privacy:</b> Information retrieved via WHOIS can be outdated, incomplete, or intentionally obfuscated. Due to privacy regulations like GDPR, registrant contact details are often redacted or replaced with anonymized information (e.g., 'Privacy Protect' services), limiting the direct visibility of domain owners.<br><br><b>Rate Limiting:</b> Many WHOIS servers implement rate limiting to prevent abuse, which can temporarily block your IP address if too many queries are made in a short period. This is a common challenge for automated WHOIS queries.<br><br><b>Varying Output Formats:</b> The structure and content of WHOIS query results differ significantly between registrars, registries, and RIRs (Regional Internet Registries), making automated parsing and consistent data extraction challenging without specialized tools.<br><br><b>Decentralized Nature:</b> For a complete picture of a domain or IP block, multiple queries might be necessary as information can be distributed across various servers (e.g., a query for a .com domain might first hit the Verisign server, which then refers to the domain's registrar's WHOIS server). The <b>whois</b> command attempts to follow these referrals automatically, but it's not always exhaustive.


title: THIN VS. THICK WHOIS
content:
Some registries (e.g., .com, .net) use a &quot;<i>thin</i>&quot; WHOIS model, meaning their servers only store basic information (like name servers and registrar) and refer you to the domain's registrar for full details. Others use a &quot;<i>thick</i>&quot; model, where the registry's WHOIS server holds all registrant information directly. The <b>whois</b> command attempts to navigate this automatically by following referrals, but understanding this distinction helps in interpreting results.


title: COMMON USAGE EXAMPLES
content:
Here are some typical ways to use the <b>whois</b> command:<br><br><code><b>whois</b> example.com</code><br><i>(Query a domain name to find its registrant, dates, and name servers)</i><br><br><code><b>whois</b> 203.0.113.45</code><br><i>(Query an IPv4 address to find its allocation block, organization, and contact details)</i><br><br><code><b>whois</b> 2001:db8::1</code><br><i>(Query an IPv6 address for similar allocation information)</i><br><br><code><b>whois</b> AS12345</code><br><i>(Query an Autonomous System Number to find its owner and related information, often for routing purposes)</i><br><br><code><b>whois</b> <b>-h</b> whois.arin.net 203.0.113.45</code><br><i>(Specify a WHOIS server directly, useful if you know which Regional Internet Registry manages the IP block)</i>


title: HISTORY
content:
The <b>whois</b> service is one of the oldest internet services, predating the World Wide Web itself. It originated in the early 1980s for ARPANET users to look up contact information for network administrators. As the internet expanded and domain names became prevalent, <b>whois</b> evolved to track domain registrations and IP address allocations. Initially, the system was more centralized, but it quickly became distributed, with different registries and registrars maintaining their own databases. The <b>whois</b> command-line client reflects this distributed nature, often automatically following referrals to the correct server. Recent years have seen significant changes, particularly with the introduction of privacy regulations like GDPR, which have led to much of the personal registrant data being redacted or anonymized from public WHOIS queries. This has shifted the focus from direct personal contact information to more organizational and technical details, emphasizing the integrity and stability of the internet's addressing system.


title: SYNOPSIS
content:
<b>whoopsie</b> is primarily designed to run as a background system daemon, managed by <i>systemd</i>. It is not typically invoked directly by users from the command line with options or arguments. Its operation is configured via its dedicated configuration file rather than command-line parameters.


title: PARAMETERS
content:
<b>No direct command-line parameters</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As a system daemon, <b>whoopsie</b> does not accept typical command-line parameters for user interaction. Its behavior is controlled by its configuration file, <i>/etc/whoopsie/whoopsie.conf</i>.<br><br>


title: DESCRIPTION
content:
<b>whoopsie</b> is a system daemon predominantly found in Ubuntu and its derivatives, tasked with collecting and submitting crash reports. These reports are generated by the <i>apport</i> utility when an application or system component crashes. The daemon's primary purpose is to help improve software quality by sending anonymized crash data to Canonical's servers, allowing developers to identify and fix bugs. It handles the queuing of reports, applies privacy filters to strip sensitive data, and manages upload rates to prevent server overload. Users typically do not interact directly with <b>whoopsie</b> as it operates silently in the background, making it a critical, yet unseen, component of Ubuntu's quality assurance infrastructure.


title: CAVEATS
content:
<b>whoopsie</b> comes with certain considerations for users:<br><ul><li><b>Privacy Concerns:</b> While efforts are made to anonymize data, some users may have privacy concerns about automatic crash report uploads containing system information.</li><li><b>Network Usage:</b> It requires an active internet connection to submit reports, which might consume a small amount of network bandwidth.</li><li><b>Ubuntu Specific:</b> This daemon is an integral part of the Ubuntu ecosystem and is generally not found or used in other Linux distributions.</li></ul>


title: CONFIGURATION FILE
content:
The operational parameters and behavior of <b>whoopsie</b> are controlled through its configuration file, typically located at <i>/etc/whoopsie/whoopsie.conf</i>. This file allows administrators to enable or disable crash reporting, configure proxy settings, and manage specific privacy-related options.


title: SERVICE MANAGEMENT
content:
As a <i>systemd</i> service, <b>whoopsie</b> can be managed using the <b>systemctl</b> command. For instance, to check its current status, one would use <i>`systemctl status whoopsie.service`</i>. To stop or disable the daemon, commands like <i>`systemctl stop whoopsie.service`</i> or <i>`systemctl disable whoopsie.service`</i> can be used, respectively.


title: DATA ANONYMIZATION
content:
A key feature of <b>whoopsie</b> is its design to anonymize sensitive information within crash reports before submission. It aims to strip out personally identifiable data such as user names, hostnames, and specific file paths to protect user privacy, while still retaining the necessary technical details for debugging purposes.


title: HISTORY
content:
<b>whoopsie</b> was developed by Canonical, the company behind Ubuntu, to be a core part of Ubuntu's crash reporting framework. It was introduced to automate the process of collecting and submitting anonymous crash data from users, aiming to provide developers with essential insights for improving software stability and reliability across the Ubuntu platform.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <i>wifite</i>'s help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the program's version number and exit.<br><br><b>--kill</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Kill conflicting processes that might interfere with wireless operations (e.g., NetworkManager, wpa_supplicant).<br><br><b>--mac</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Change the wireless adapter's MAC address to a random, a specified, or a persistent one during the attack.<br><br><b>--channel &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only attack access points on the specified channel number.<br><br><b>--skip-wps</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not attempt WPS attacks (Reaver/Bully) on any access points.<br><br><b>--skip-wpa</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not attempt WPA/WPA2 handshake capture attacks.<br><br><b>--skip-wep</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not attempt WEP attacks.<br><br><b>--wps-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only target and attack access points vulnerable to WPS (PIN bruteforce, Pixie Dust).<br><br><b>--wpa-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only target and attack WPA/WPA2 access points via handshake capture.<br><br><b>--wep-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only target and attack WEP encrypted access points.<br><br><b>--crack</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to crack WPA/WPS passwords using captured handshakes and/or dictionary files.<br><br><b>--no-crack</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not attempt to crack passwords after capturing handshakes or obtaining WPS PINs. Just save the output.<br><br><b>--dictionary &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom dictionary file (wordlist) to use for cracking WPA handshakes.<br><br><b>--handshake &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a pre-captured WPA handshake file (.cap or .pcap) to attempt cracking without capturing it again.<br><br><b>--reaver-options &lt;options&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass custom options directly to <i>Reaver</i> during WPS attacks.<br><br><b>--pixie</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform the Pixie Dust attack on vulnerable WPS access points.<br><br><b>--ignore-old-captures</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use previously captured handshakes found in the output directory; only attempt new captures.<br><br><b>--output &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom output directory or file name for results (handshakes, PINs, logs).<br><br><b>--essid &lt;ESSID&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Target a specific wireless network by its ESSID (network name).<br><br><b>--bssid &lt;BSSID&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Target a specific wireless network by its BSSID (MAC address of the access point).<br><br><b>--power &lt;dBm&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only show/attack access points with a signal strength greater than or equal to the specified dBm value.<br><br><b>--nodeauths</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not send deauthentication packets to clients. This makes attacks passive, relying on clients to connect naturally for handshake capture.<br><br>


title: DESCRIPTION
content:
<i>Wifite</i> is an automated tool designed for auditing wireless networks. It aims to simplify the process of testing the security of Wi-Fi networks by automating common attack methods against WEP, WPA, and WPS-enabled networks. <br><br>It handles tasks such as putting the wireless adapter into monitor mode, scanning for available access points, attempting various attacks (e.g., handshake capture, WPS PIN brute-forcing, Pixie Dust), and, if successful, cracking passwords using dictionaries or bruteforce methods. <i>Wifite</i> aggregates and utilizes several other well-known tools like <i>Aircrack-ng</i>, <i>Reaver</i>, and <i>Bully</i>, providing a streamlined interface for comprehensive wireless security assessments.


title: CAVEATS
content:
<i>Wifite</i> requires a wireless adapter capable of monitor mode and packet injection. Root privileges are essential for its operation. Usage should always be confined to networks for which you have explicit permission to test, as unauthorized access is illegal. Performance can vary significantly based on hardware, signal strength, and network activity.


title: REQUIREMENTS
content:
To effectively use <i>Wifite</i>, ensure you have a compatible wireless network adapter that supports monitor mode and packet injection. Essential dependencies include the <i>Aircrack-ng</i> suite (<i>airmon-ng</i>, <i>aireplay-ng</i>, <i>aircrack-ng</i>), <i>Reaver</i>, <i>Bully</i>, and <i>Pixiewps</i>. These tools are typically pre-installed on penetration testing distributions like Kali Linux or Parrot OS.


title: ETHICAL USE
content:
<i>Wifite</i> is a powerful tool designed for security auditing. It should only be used on wireless networks that you own or have explicit, written permission to test. Unauthorized access or disruption of wireless networks is illegal and can lead to severe penalties.


title: HISTORY
content:
Initially developed to simplify the often complex process of wireless auditing using the <i>Aircrack-ng</i> suite, <i>Wifite</i> quickly became popular for its user-friendly automation. The original <i>Wifite</i> (often referred to as <i>Wifite1</i>) focused primarily on WEP and basic WPA attacks. It was later superseded by <i>Wifite2</i>, a complete rewrite that introduced support for modern attacks like WPS PIN brute-forcing (via <i>Reaver</i>/<i>Bully</i>) and the Pixie Dust attack, along with improved stability, wider compatibility, and better attack methodologies.


title: SYNOPSIS
content:
<b>wiggle</b> [<i>options</i>] [<i>file...</i>]<br>or<br><b>wiggle</b> [<i>options</i>] <i>patch_file</i> [<i>file...</i>]


title: PARAMETERS
content:
<b><b>-p</b> <i>NUM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Strip <i>NUM</i> leading components from file names specified in the patch header.<br><br><b><b>-i</b> <i>PATCHFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the patch from <i>PATCHFILE</i> instead of standard input.<br><br><b><b>-o</b> <i>OUTFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output to <i>OUTFILE</i> instead of modifying the original file in place.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose mode, providing more information about the patching process and successful hunk applications.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat the patch as a unified diff format. This is often the default for modern patches.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allow `wiggle` to create new files if the patch indicates a new file.<br><br><b><b>-F</b> <i>NUM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the fuzz factor to <i>NUM</i>. This specifies the number of lines `wiggle` can ignore when comparing context lines to find a match. A higher number allows for more deviation.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverse the patch. Attempt to un-do the changes described in the patch file.<br><br><b><i>file...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more target files to apply the patch to. If not specified, `wiggle` attempts to determine the file(s) from the patch header.<br><br>


title: DESCRIPTION
content:
The `wiggle` command is a specialized utility designed to apply patches (generated by `diff`) even when the context lines in the patch do not exactly match the target file. Unlike the standard `patch` command, which might reject hunks with slight context discrepancies, `wiggle` attempts to "wiggle" the context lines up or down a few lines to find a matching location. This makes it invaluable for applying patches that were generated against a slightly different version of a file, or where line numbers have shifted due to unrelated changes.<br><br>It operates by searching for the best-fit location for each hunk, often requiring user confirmation for ambiguous matches. `wiggle` is particularly useful in development workflows where patches need to be applied across slightly diverging codebases, reducing the need for manual editing of patch files or target sources. It helps automate the application of non-exact patches, making it a powerful tool for maintaining and evolving software.


title: CAVEATS
content:
`wiggle` is designed for minor context differences and is not a substitute for a full 3-way merge tool. It can sometimes make incorrect assumptions or apply a hunk to an unintended location if the context is too ambiguous or the differences are substantial. Users should always review the changes after using `wiggle` to ensure correctness. In cases of major divergence, manual intervention or a more robust merge utility is often required. Its "wiggling" capability is limited by the fuzz factor and the uniqueness of the context lines.


title: INTERACTIVE MODE
content:
`wiggle` often prompts the user for confirmation when it finds multiple possible locations for a hunk or when a hunk's context is highly ambiguous, allowing the user to guide the patching process and select the correct application point.


title: LIMITATIONS
content:
While powerful for minor positional mismatches, `wiggle` cannot resolve large structural changes, semantic conflicts, or conflicts arising from completely different logic in the code. It primarily deals with positional shifts of otherwise identical code blocks.


title: HISTORY
content:
`wiggle` originated from the need to apply slightly "broken" patches, particularly common in open-source development where patches might be generated against subtly different versions of a codebase. It addresses a limitation of the standard `patch` utility, which is very strict about context matching. While `patch` has evolved with options like <b>-F</b> (fuzz factor), `wiggle` provides a more aggressive or interactive approach to resolving context mismatches, sometimes offering more fine-grained control or simply a different algorithm for finding the best match. It's often found bundled with `patch` utilities or as a separate specialized tool used by developers who frequently deal with community-contributed patches.


title: PARAMETERS
content:
<b><b>&lt;TOPIC&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The term or phrase to search for on Wikipedia. This is often the primary argument.<br><br><b><b>-s</b>, <b>--search</b> <i>&lt;TOPIC&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly search for a Wikipedia article. This behavior is often implied if no other option is given besides the topic.<br><br><b><b>-l</b>, <b>--language</b> <i>&lt;LANG_CODE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Wikipedia language to use (e.g., 'en' for English, 'de' for German).<br><br><b><b>-p</b>, <b>--page</b> <i>&lt;TITLE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly open a Wikipedia page by its exact title, bypassing the search function.<br><br><b><b>-r</b>, <b>--random</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Open a random Wikipedia article, useful for discovery or curiosity.<br><br><b><b>-b</b>, <b>--browser</b> <i>&lt;BROWSER&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the text-based browser to use for rendering (e.g., 'w3m', 'lynx').<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display usage information and a list of available options, then exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version of <i><b>wikiman</b></i> and exit.<br><br>


title: DESCRIPTION
content:
<i><b>wikiman</b></i> is a command-line utility designed to search and display Wikipedia articles directly within your terminal emulator. It fetches content from Wikipedia, typically rendering it using text-based web browsers like <i>w3m</i> or <i>lynx</i>, or by outputting plain text. This allows users to quickly look up information without leaving the command line, making it a convenient tool for developers, system administrators, or anyone who prefers a minimalist interface. It supports searching for topics, specifying languages, and directly accessing article titles, providing a fast and efficient way to retrieve knowledge.


title: CAVEATS
content:
<i><b>wikiman</b></i> requires an active internet connection to fetch Wikipedia content.<br>It typically relies on external text-based browsers (like <i>w3m</i> or <i>lynx</i>) which must be installed separately.<br>Complex page layouts, images, and interactive elements are generally not displayed or are rendered minimally.<br>Some articles may not be found if the search term is not precise enough, or if the specified language does not contain the article.


title: CONFIGURATION
content:
Some versions of <i><b>wikiman</b></i> allow configuration via environment variables or a configuration file to set default language, preferred browser, and other options, enhancing user customization.


title: SEARCH LOGIC
content:
By default, <i><b>wikiman</b></i> often performs a 'lucky' search, redirecting directly to the most relevant article if an exact match or highly probable result is found. If no precise match is identified, it may present a list of search results for the user to choose from.


title: HISTORY
content:
<i><b>wikiman</b></i> is not a standard, pre-installed Linux utility but typically refers to community-developed, open-source projects available on platforms like GitHub. These projects emerged to provide a quick, terminal-centric way to access Wikipedia, leveraging its API or simple web scraping. Its development is often driven by individual contributors seeking a command-line alternative to web browsers for information retrieval, emphasizing speed and minimal resource usage.


title: PARAMETERS
content:
<b><i><search_term></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The word or phrase to search for on Wikipedia. Multiple words should be enclosed in quotes if they represent a single query (e.g., '<i>wikit "Linux kernel"</i>').<br><br><b><b>-l</b> <i><lang_code></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the language of the Wikipedia article to retrieve (e.g., '<i>en</i>' for English, '<i>de</i>' for German). If omitted, English is usually the default. <i>Note: This option's availability depends on the specific wikit implementation.</i><br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the full article content instead of just the summary or introductory section. This can result in a much larger output in the terminal. <i>Note: This option's availability depends on the specific wikit implementation.</i><br><br><b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the Wikipedia article in the default web browser instead of displaying content in the terminal. Useful for more in-depth reading. <i>Note: This option's availability depends on the specific wikit implementation.</i><br><br>


title: DESCRIPTION
content:
The <i>wikit</i> command is a lightweight command-line utility designed to fetch and display concise summaries of Wikipedia articles directly in your terminal. It serves as a convenient tool for quickly looking up information without needing to open a web browser.<br>Typically implemented as a shell script, <i>wikit</i> leverages Wikipedia's API or web scraping techniques to retrieve the introductory section of an article corresponding to the user's search query. This makes it ideal for rapid fact-checking, understanding basic concepts, or getting a brief overview of a topic during command-line work.<br>Its primary benefit lies in its speed and minimalism, providing immediate answers in a text-based format, making it particularly useful for developers, system administrators, and anyone who prefers to stay within the terminal environment for information retrieval.


title: CAVEATS
content:
The <i>wikit</i> command is not a standard, pre-installed utility on most Linux distributions; it typically requires manual installation or scripting. Its functionality heavily depends on an active internet connection to access Wikipedia.<br>Furthermore, implementations of <i>wikit</i> can vary widely, meaning the exact set of supported options (like language selection or full article retrieval) and underlying dependencies (such as <i>curl</i>, <i>jq</i> for JSON parsing, or text browsers like <i>lynx</i> or <i>w3m</i>) can differ significantly.<br>Output formatting may also vary, and complex Wikipedia content like tables, images, or infoboxes are generally not well-rendered in the terminal output.


title: <I>INSTALLATION NOTES</I>
content:
As <i>wikit</i> is not a standard package, installation usually involves downloading a script (e.g., from a GitHub repository) and placing it in a directory listed in your system's <i>PATH</i> environment variable. You might also need to make the script executable using <i>chmod +x wikit</i>.<br>Ensure you have necessary dependencies like <i>curl</i> and <i>jq</i> (for API-based versions) or a text browser like <i>lynx</i> or <i>w3m</i> (for HTML-scraping versions) installed on your system. These dependencies are crucial for <i>wikit</i> to function correctly.


title: HISTORY
content:
The <i>wikit</i> command does not have a single, official development history like many standard Linux utilities. Instead, it typically originates from individual developers and programmers who created custom shell scripts or small programs to fulfill the need for quick Wikipedia access from the command line.<br>Its emergence is largely a testament to the Unix philosophy of chaining simple tools together to perform complex tasks, often leveraging tools like <i>curl</i> for web requests and <i>jq</i> for parsing JSON API responses, or text-based browsers for HTML parsing.<br>While various versions exist across GitHub and personal repositories, they all share the common goal of bringing Wikipedia's vast knowledge base directly into the terminal environment, reflecting a broader trend among developers to minimize context switching and enhance productivity within their preferred command-line interface.


title: PARAMETERS
content:
<b>-h &lt;dir&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where the generated C/C++ header file (.h) should be placed.<br><br><b>-r &lt;dir&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where the generated resource script file (.rc) should be placed.<br><br><b>-x &lt;dir&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory for the generated RC file. This option is considered deprecated and superseded by -r.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates C-style names for message constants in the output header file.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an MC stub, typically a C/C++ source file for message formatting or error reporting.<br><br><b>-p &lt;prefix&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specified prefix to all generated symbols (e.g., message IDs and function names).<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information during the compilation process.<br><br><b>-W&lt;level&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the warning level (0-3), controlling the verbosity and strictness of warning messages. 0 suppresses warnings, 3 shows all warnings.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>windmc</i> version information and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage instructions and available options, then exits.<br><br>


title: DESCRIPTION
content:
<i>windmc</i> is the Wine Message Compiler, a utility within the Wine development toolkit designed to process message definition files (.mc files) typically used in Windows application development. Its primary function is to generate corresponding C/C++ header files (.h) and resource script files (.rc) from these .mc inputs.<br><br>These generated files are crucial for internationalization and localization, defining unique message IDs, their symbolic names, severity, and default message text. The .h files provide symbolic constants for message IDs, while the .rc files embed the message strings into an application's resources. <i>windmc</i> allows developers to compile Windows-specific message resources on non-Windows platforms (like Linux) as part of the Wine project's effort to provide compatible development tools for cross-compilation or building applications intended to run under Wine.


title: CAVEATS
content:
<i>windmc</i> is specifically designed for compiling Windows message definition files within the Wine ecosystem. It does not compile generic Linux message files (e.g., for gettext). Its utility is primarily for developers working with Windows applications or components that are intended to run under Wine, or for building Wine itself.


title: ROLE IN CROSS-COMPILATION
content:
<i>windmc</i> plays a vital role in cross-compilation environments, allowing developers on Linux or other Unix-like systems to build Windows executables and libraries that include message resources. This capability is essential for projects that need to maintain a single codebase for both Windows and non-Windows targets, or for Wine developers themselves who need to compile Windows-specific components of Wine.


title: MESSAGE DEFINITION FILES (.MC)
content:
The input <i>.mc</i> files are text files that define event messages, their severity, categories, and associated string values. These files are standard in Windows development for internationalization, especially for event logging and providing localized string resources for user interfaces. <i>windmc</i> parses this specialized format to generate the necessary C/C++ headers and resource scripts.


title: HISTORY
content:
<i>windmc</i> is an integral component of the Wine project, which began in 1993 with the goal of allowing Windows applications to run on Unix-like operating systems. As part of this effort, Wine provides its own implementations of various Microsoft development tools, including a message compiler, to enable the compilation and cross-compilation of Windows source code. <i>windmc</i> was developed to provide compatibility with Microsoft's message compiler (MC.exe), ensuring that Windows resource compilation processes can be replicated on non-Windows platforms, crucial for building Wine itself and for developers creating or porting Windows applications.


title: SYNOPSIS
content:
<br><b><pre>wine [OPTION...] PROGRAM [ARGUMENT...]</pre></b><br><b><pre>wine [OPTION...] COMMAND</pre></b><br><b><pre>wine [OPTION...] --version</pre></b><br><b><pre>wine [OPTION...] --help</pre></b><br>This syntax illustrates how to invoke Wine. You typically provide the path to a Windows executable (<i>PROGRAM</i>) followed by any arguments (<i>ARGUMENT...</i>) that the program itself needs. Alternatively, you can run a built-in Wine command (<i>COMMAND</i>) like 'explorer' or 'cmd'. Options (<i>OPTION...</i>) modify Wine's behavior.


title: PARAMETERS
content:
<b><i>PROGRAM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Windows executable (.exe or .msi) to run, or the name of an executable within the Wine prefix's PATH.<br><br><b><i>ARGUMENT...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Arguments passed directly to the Windows program being executed by Wine.<br><br><b><i>COMMAND</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A built-in Wine command like 'explorer', 'cmd', or 'winecfg'. These commands provide Wine's own versions of Windows utilities.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message showing available command-line options and their usage.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the Wine version information, including the build architecture and Git commit hash.<br><br><b><b>--prefix</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Wine prefix (also known as a Winebottle) to use for this execution. If not specified, Wine uses <b>~/.wine</b> by default. This allows for isolated environments for different applications.<br><br><b><b>--bottle</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <b>--prefix</b>, often used by third-party Wine managers and scripts for clarity.<br><br><b><b>--dll</b> <i>&lt;name&gt;=&lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the loading behavior of specific DLLs (Dynamic Link Libraries). <i>&lt;type&gt;</i> can be 'builtin' (use Wine's version), 'native' (use Windows's DLL if available), or 'disabled'.<br><br><b><b>--debugmsg</b> <i>&lt;channel&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables specific debug channels for detailed logging output, useful for troubleshooting issues. Multiple channels can be specified separated by commas.<br><br><b><b>--check-libs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks for missing system libraries required by Wine and lists them, which can help diagnose runtime problems.<br><br><b><b>--no-daemon</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents Wine from running its server component in the background. Generally not recommended for most uses as it can slow down subsequent Wine starts.<br><br>


title: DESCRIPTION
content:
Wine (recursive acronym for "Wine Is Not an Emulator") is a free and open-source compatibility layer that allows Windows applications to run on Linux and other Unix-like operating systems. Instead of simulating an entire Windows operating system, Wine translates Windows API calls into POSIX API calls on-the-fly, enabling native execution. This means Windows programs can integrate seamlessly with your Linux desktop environment, often performing better than they would in a virtual machine, as there's no overhead of a guest OS. Wine provides its own re-implementation of the Windows libraries and system services, allowing users to run a vast range of Windows software, from productivity tools to games, directly on their Linux machine without needing a Windows license or installation. It's a crucial tool for expanding the software ecosystem available to Linux users.


title: CAVEATS
content:
Not every Windows application will run flawlessly or at all. Compatibility can vary widely depending on the application, its dependencies, and the specific Wine version. Some applications may require significant configuration (e.g., using <b>winecfg</b> or <b>winetricks</b>) or specific workarounds. Performance may not always match native Windows execution, especially for graphically intensive games. Users should also be cautious when running untrusted Windows executables, as Wine effectively provides them with access to parts of your Linux file system and resources.


title: WINE PREFIX (WINEPREFIX)
content:
Wine organizes its virtual Windows environment within a directory called a 'Wine prefix' or 'Winebottle'. By default, this is <b>~/.wine</b>. Each prefix contains a virtual C: drive, a Windows registry, and installed programs. Using different prefixes (e.g., via the <b>WINEPREFIX</b> environment variable or the <b>--prefix</b> option) allows you to isolate applications, prevent conflicts, and manage different Windows versions or configurations independently. For instance: <b>WINEPREFIX=~/.wine_games wine program.exe</b>


title: CONFIGURATION (WINECFG)
content:
The <b>winecfg</b> utility (run by typing <b>winecfg</b> in your terminal) provides a graphical interface to configure various aspects of a Wine prefix. This includes setting the emulated Windows version (e.g., Windows 7, Windows 10), configuring drives, audio, graphics, and DLL overrides. It's an essential tool for troubleshooting and optimizing application compatibility.


title: HELPER SCRIPTS (WINETRICKS)
content:
<b>winetricks</b> is a community-driven script that simplifies the installation of various components (like DirectX, .NET Framework, Visual C++ runtimes) and common workarounds that Windows applications often require within a Wine prefix. It automates complex setup procedures and is highly recommended for improving application compatibility for many applications.


title: HISTORY
content:
Wine development began in 1993, initiated by Bob Amstadt and Eric Youngdale. Its original aim was to enable running 16-bit Windows applications on Linux. Over the years, it evolved significantly, expanding its support to 32-bit and eventually 64-bit Windows applications. A major milestone was the release of Wine 1.0 in June 2008, after 15 years of development. Since then, Wine has seen continuous and rapid development, driven by a dedicated open-source community. Its importance grew further with projects like Valve's Proton, which leverages Wine to bring a vast library of Windows games to Linux via Steam, significantly boosting its mainstream adoption and ongoing development.


title: SEE ALSO
content:
<b>winecfg</b>(1): Wine configuration utility, used for graphical settings management., <b>winetricks</b>(1): A helper script to install common components and apply workarounds for Windows applications within Wine prefixes., <b>protontricks</b>(1): A version of Winetricks specifically designed for use with Valve's Proton compatibility layer., <b>playonlinux</b>: A graphical frontend that simplifies managing multiple Wine installations and Windows applications., <b>qemu</b>(1): A generic and open-source machine emulator and virtualizer, offering full system emulation as an alternative to Wine., <b>virtualbox</b>(1): A popular general-purpose full virtualizer for x86 hardware, running entire guest operating systems like Windows.


title: SYNOPSIS
content:
<I>winetricks</I> [<B>--force</B>] [<B>--unattended</B>] [<B>--no-isolate</B>] [<B>--prefix</B> <I>prefix</I>] [<B>--optout-data</B> | <B>--optin-data</B>] [<B>--verbose</B> | <B>--quiet</B>] <I>verb</I> [<I>verb</I>...]<br><I>winetricks</I> [<B>--force</B>] [<B>--unattended</B>] [<B>--no-isolate</B>] [<B>--prefix</B> <I>prefix</I>] [<B>--optout-data</B> | <B>--optin-data</B>] [<B>--verbose</B> | <B>--quiet</B>] <B>--gui</B><br><I>winetricks</I> <B>--help</B> | <B>--version</B> | <B>--self-update</B>


title: PARAMETERS
content:
<b><B>--force</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces an action, ignoring existing installations or potential errors. Can be useful for re-installing components.<br><br><b><B>--unattended</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs in non-interactive mode, suppressing all graphical user interface prompts and dialogs. This is particularly useful for scripting or automated setups.<br><br><b><B>--no-isolate</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;By default, <I>winetricks</I> may create a new, isolated <I>Wine</I> prefix for certain verbs. This option forces the installation of the selected verb(s) into the default <I>Wine</I> prefix (typically <I>~/.wine</I>) or the one specified by <B>--prefix</B>, without creating a new one.<br><br><b><B>--prefix</B> <I>prefix</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative <I>Wine</I> prefix directory to operate on. This allows users to manage multiple distinct <I>Wine</I> environments for different applications.<br><br><b><B>--gui</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches the graphical user interface of <I>winetricks</I>, allowing for interactive selection and installation of components.<br><br><b><B>--verbose</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints more detailed output during execution, which can be helpful for debugging or understanding the steps being performed.<br><br><b><B>--quiet</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output, showing only critical errors or essential information. Useful for minimizing console clutter.<br><br><b><B>--optout-data</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the collection of anonymous usage data (telemetry) that helps improve <I>winetricks</I>.<br><br><b><B>--optin-data</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the collection of anonymous usage data (telemetry). This is often the default behavior.<br><br><b><I>verb</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A specific component, setting, or application to install or configure. Examples include <B>vcrun2019</B> (Visual C++ 2019 runtime), <B>d3dx9</B> (DirectX 9 components), or <B>dotnet472</B> (.NET Framework 4.7.2).<br><br><b><B>list</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available verbs and categories that <I>winetricks</I> can install or manage.<br><br>


title: DESCRIPTION
content:
<I>winetricks</I> is a helper script designed to simplify the process of installing and configuring various redistributable runtime libraries, games, and components, which are often essential for Windows applications and games to run correctly within the <I>Wine</I> compatibility layer on Linux and other Unix-like operating systems.<br><br>Instead of requiring users to manually download, extract, and install complex dependencies like <I>DirectX</I> components, <I>.NET Framework</I> versions, <I>Visual C++</I> runtimes, specific fonts, or apply registry tweaks, <I>winetricks</I> automates these tasks. It fetches the necessary files from the internet, applies common workarounds, and integrates them into your <I>Wine</I> prefixes.<br><br>This tool significantly reduces the effort and technical knowledge required to get many Windows programs functioning properly in <I>Wine</I>. It also supports managing multiple <I>Wine</I> prefixes, allowing users to maintain isolated environments for different applications, thus preventing potential conflicts and ensuring cleaner installations.


title: CAVEATS
content:
Using <I>winetricks</I> requires <I>Wine</I> to be installed and properly configured on your system. An active internet connection is typically necessary for <I>winetricks</I> to download the various components it installs. While it greatly simplifies setup, some complex Windows applications or games may still require additional manual tweaks or specific <I>Wine</I> versions. Be cautious with the <B>--no-isolate</B> option, as installing many different dependencies into a single <I>Wine</I> prefix can sometimes lead to conflicts or instability.


title: VERBS AND CATEGORIES
content:
<I>winetricks</I> organizes its vast functionality into specific 'verbs'. These verbs are grouped into logical categories to help users find what they need. Common categories include <B>apps</B> (for general Windows applications like Notepad++), <B>dlls</B> (for runtime libraries such as <I>DirectX</I>, <I>.NET Framework</I>, <I>Visual C++</I> redistributables), <B>fonts</B> (for installing common Windows fonts), <B>games</B> (for specific game fixes or dependencies), and <B>settings</B> (for various <I>Wine</I> configuration tweaks like changing screen resolution or enabling CSMT). You can discover all available verbs and their categories by running <B>winetricks list</B>.


title: WINE PREFIXES
content:
<I>winetricks</I> is highly integrated with the concept of <I>Wine</I> prefixes. A <I>Wine</I> prefix is an isolated environment (akin to a separate Windows installation or 'C:' drive) where <I>Wine</I> stores its configuration, installed programs, and registry entries. By default, <I>Wine</I> uses <I>~/.wine</I> as its prefix, but you can specify a different one using the <B>WINEPREFIX</B> environment variable or the <B>--prefix</B> command-line option. This feature is crucial for managing multiple Windows applications that might require different versions of libraries or conflicting settings, as it allows each application to reside in its own dedicated and clean <I>Wine</I> environment.


title: HISTORY
content:
<I>winetricks</I> began as a modest collection of shell scripts, initially developed by Austin English in 2006, with the primary goal of automating the installation of common components frequently needed by Windows applications running in <I>Wine</I>. Its simplicity and effectiveness quickly made it popular within the <I>Wine</I> community, as it addressed a common pain point for users. Over the years, it has been significantly expanded, maintained, and improved by numerous contributors from the <I>Wine</I> project, growing into the comprehensive and indispensable tool it is today.


title: SYNOPSIS
content:
<b>winicontopam</b> [<I>-width=<W></I>] [<I>-height=<H></I>] [<I>-depth=<D></I>] [<I>-index=<N></I>] [<I>-verbose</I>] [<I>-list</I>] [<I>-alpha</I>] [<I>-forecolor=<COLOR></I>] [<I>-backcolor=<COLOR></I>] [<I>-reportsize</I>] [<I>-reportformat</I>] [<I>iconfile</I>]


title: PARAMETERS
content:
<b><I>-width=<W></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the image within the icon file that has the specified width <I>W</I> (in pixels).<br><br><b><I>-height=<H></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the image within the icon file that has the specified height <I>H</I> (in pixels).<br><br><b><I>-depth=<D></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the image within the icon file that has the specified color depth <I>D</I> (in bits per pixel).<br><br><b><I>-index=<N></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the image at the specified zero-based index <I>N</I> within the icon file. The first image is at index 0.<br><br><b><I>-verbose</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints detailed information about the icon file and the selected image to standard error.<br><br><b><I>-list</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all images contained within the icon file, showing their dimensions, depth, and index. No image is converted when this option is used.<br><br><b><I>-alpha</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures that the output PAM image includes an alpha channel, even if the input image's alpha information is minimal or implicit. By default, an alpha channel is only output if one is truly present in the source icon.<br><br><b><I>-forecolor=<COLOR></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the foreground color to use for 1-bit (monochrome) icons. <I>COLOR</I> can be a color name or a hexadecimal RGB value (e.g., '#RRGGBB'). Defaults to black.<br><br><b><I>-backcolor=<COLOR></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the background color to use for 1-bit (monochrome) icons. <I>COLOR</I> can be a color name or a hexadecimal RGB value. Defaults to white.<br><br><b><I>-reportsize</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the width and height of the selected image to standard output, without converting the image itself.<br><br><b><I>-reportformat</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the Netpbm format (PBM, PGM, PPM, or PAM) that the selected image would convert to, without performing the conversion.<br><br>


title: DESCRIPTION
content:
<i><b>winicontopam</b></i> is a specialized utility from the Netpbm toolkit, designed to convert images embedded within a Windows icon (<I>.ico</I>) file into the Portable Arbitrary Map (PAM) format. Windows icon files can contain multiple images, varying in size, color depth, and resolution, to suit different display contexts. <i><b>winicontopam</b></i> allows users to precisely select which of these embedded images to extract for conversion, using criteria such as specific width, height, color depth, or its index within the icon file. The output PAM image is a versatile Netpbm super-format capable of representing various types of pixel data, making it suitable for further processing with other Netpbm tools or conversion to other image formats. This command is invaluable for developers and designers who need to extract specific icon representations from <I>.ico</I> files for use in cross-platform applications or detailed image manipulation.


title: CAVEATS
content:
Only one image can be converted per execution of <i><b>winicontopam</b></i>. If multiple image selection criteria (width, height, depth, index) are provided, they are applied sequentially to find the best match. If no criteria are specified, the first image found in the ICO file is chosen. For 1-bit monochrome icons, the foreground and background colors are determined by the icon's color table or can be specified using <I>-forecolor</I> and <I>-backcolor</I> options.


title: INPUT AND OUTPUT
content:
<i><b>winicontopam</b></i> reads the Windows icon file from the specified <I>iconfile</I> argument. If <I>iconfile</I> is omitted, it reads the icon data from standard input. The converted PAM image is always written to standard output, making it easy to pipe the output to other Netpbm tools or programs that can handle PAM images, such as <I>pamtopng</I> or <I>pamtojpeg</I> for further format conversion.


title: IMAGE SELECTION LOGIC
content:
When multiple selection criteria (e.g., <I>-width</I>, <I>-height</I>, <I>-depth</I>, <I>-index</I>) are provided, <i><b>winicontopam</b></i> searches for an image that matches all specified criteria. If no image matches all criteria, or if only partial criteria are given, it attempts to find the best suitable image based on an internal priority, typically preferring exact matches and then the first available image if no specific criteria uniquely identify one. It's often recommended to use <I>-list</I> first to understand the contents of an ICO file before attempting a conversion.


title: HISTORY
content:
<i><b>winicontopam</b></i> is an integral part of the Netpbm project, a comprehensive suite of graphics programs that originated in the late 1980s with Jef Poskanzer's PBMPlus package. The Netpbm project has continuously evolved to support a wide array of image formats and manipulations, with <i><b>winicontopam</b></i> specifically developed by Bryan Henderson to address the need for converting proprietary Windows icon formats into open, versatile Netpbm formats for broader interoperability and image processing capabilities on Linux and Unix-like systems.


title: SYNOPSIS
content:
<b>winicontoppm</b> [<i>-alpha</i> | <i>-noalpha</i>] [<i>-bgcolor=<#RRGGBB></i>] [<i>-icon=<N></i>] [<i>-pixels=<N></i>] [<i>-depth=<N></i>] [<i>ico_file</i>]


title: PARAMETERS
content:
<b><i>ico_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input Windows icon (<i>.ico</i>) file. If omitted or '<i>-</i>', <b>winicontoppm</b> reads from standard input.<br><br><b><i>-alpha</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output an alpha channel image along with the main PPM image. The alpha image is a PGM file indicating transparency. This is the default if the icon includes an alpha channel.<br><br><b><i>-noalpha</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output an alpha channel. The icon's transparent areas will be filled with the background color (or black by default).<br><br><b><i>-bgcolor=<#RRGGBB></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a background color for transparent pixels. The color is given as a hexadecimal RGB triplet (e.g., <i>#FF0000</i> for red). Defaults to black if not specified.<br><br><b><i>-icon=<N></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select the <i>N</i>th icon image embedded in the ICO file. Icon images are numbered starting from 0. By default, <b>winicontoppm</b> picks the 'best' image (largest, highest color depth).<br><br><b><i>-pixels=<N></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select the icon image that has <i>N</i> pixels for its width/height. If multiple match, the one with the highest depth is chosen. Overrides <i>-icon</i> if both are specified and conflict.<br><br><b><i>-depth=<N></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select the icon image that has <i>N</i> bits per pixel color depth. Used in conjunction with <i>-pixels</i> or to refine the 'best' choice.<br><br>


title: DESCRIPTION
content:
<b>winicontoppm</b> is a command-line utility from the Netpbm project that converts Windows icon (<i>.ico</i>) files into a PPM (Portable PixMap) image format. This enables Windows icons to be viewed and manipulated on Unix-like systems using other Netpbm tools. ICO files can contain multiple images of different sizes and color depths; <b>winicontoppm</b> can extract a specific icon based on user criteria or select the "best" available one by default. It handles transparency (alpha channel) and allows specifying a background color for non-transparent areas. This tool is essential for developers or users needing to work with Windows iconography outside of a Windows environment.


title: CAVEATS
content:
ICO files can contain multiple images; <b>winicontoppm</b> tries to pick the 'best' one by default, which may not always be the desired one. Use <i>-icon</i>, <i>-pixels</i>, or <i>-depth</i> to specify your choice.<br>Transparency handling varies. Some ICO files use a true alpha channel, while others use a simple mask. The tool attempts to handle both. Use <i>-alpha</i> or <i>-noalpha</i> to control alpha output.<br>The output is always a PPM file (and optionally a PGM for alpha). If other formats are needed, pipe the output to other Netpbm tools (e.g., <b>pnmtopng</b>).


title: DEFAULT ICON SELECTION
content:
If no specific icon is requested using <i>-icon</i>, <i>-pixels</i>, or <i>-depth</i>, <b>winicontoppm</b> selects the 'best' icon available in the ICO file. The 'best' is typically defined as the largest icon in terms of dimensions, and among those, the one with the highest color depth. This behavior ensures that the most detailed version of the icon is usually chosen by default.


title: STANDARD INPUT/OUTPUT
content:
Like many Netpbm tools, <b>winicontoppm</b> can read the ICO file from standard input if <i>ico_file</i> is omitted or specified as '<i>-</i>'. The resulting PPM (and optional PGM) output is always written to standard output. This allows for powerful piping operations with other command-line tools.


title: HISTORY
content:
<b>winicontoppm</b> is part of the Netpbm package, a comprehensive suite of graphics file format converters and editors. Netpbm originated in the early 1990s as a collection of tools for converting between different image formats on Unix systems. <b>winicontoppm</b> was developed to address the need for converting Windows-specific icon files, which became increasingly common with the rise of Microsoft Windows, enabling cross-platform usage and manipulation of these icons. Its development reflects Netpbm's ongoing commitment to supporting a wide array of image formats.


title: SYNOPSIS
content:
There is no standard command synopsis for '<I>wipeclean</I>', as it is not a predefined, installable utility on most Linux systems. Any existing '<I>wipeclean</I>' might be a custom script with its own unique syntax and usage.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As '<I>wipeclean</I>' is not a standard command, there are no predefined parameters or options. Any custom script named '<I>wipeclean</I>' would define its own set of arguments and behavior.<br><br>


title: DESCRIPTION
content:
The term '<I>wipeclean</I>' is not associated with a standard, universally available command within most Linux distributions. Unlike common utilities such as <I>shred</I>, <I>wipe</I>, or <I>rm</I> with specific options, a dedicated '<I>wipeclean</I>' executable is not typically pre-installed or part of core system packages.<br><br>Instead, '<I>wipeclean</I>' often refers to the <B>concept</B> of securely erasing data or cleaning up temporary files and logs, commonly achieved through custom shell scripts written by users or system administrators. These scripts might combine various standard Linux tools like <I>shred</I> (for files), <I>dd</I> (for disks/partitions), <I>rm</I> (for deletion), <I>sync</I>, <I>fstrim</I> (for SSDs), or <I>find</I> (for locating files to delete) to perform thorough cleanup or secure data destruction.


title: CAVEATS
content:
The primary caveat is that '<I>wipeclean</I>' is not a standard, portable command. Its existence and functionality depend entirely on whether a user or system administrator has created a custom script with that name. Therefore, its behavior, options, and effectiveness can vary wildly or be entirely absent on different systems. Relying on a non-standard command like this for critical data erasure is not recommended without thoroughly understanding its underlying implementation and source code.


title: CUSTOM SCRIPT EXAMPLE
content:
A hypothetical custom <I>wipeclean</I> script might look like this, combining common utilities to achieve a cleanup effect:<br><br><I>#!/bin/bash<br># Simple example of a custom wipeclean script for temporary files and logs<br><br>echo "Starting system cleanup..."<br><br># Securely delete user's temporary files<br>find /tmp/$USER -type f -exec shred -z -u {} \;<br><br># Clean system-wide temporary directories<br>sudo rm -rf /var/tmp/* /tmp/*<br><br># Synchronize file system changes to disk<br>sync<br><br># Trim unallocated blocks on SSDs (if applicable and supported by fstrim)<br># Note: fstrim requires root privileges and is specific to SSDs<br>if command -v fstrim &> /dev/null; then<br>  sudo fstrim -av<br>fi<br><br>echo "Cleanup complete."</I><br><br>This example illustrates how a custom script might combine existing utilities to achieve a 'wipeclean' effect, highlighting that its capabilities are entirely defined by its creator.


title: HISTORY
content:
There is no official or widely documented development history for a standard '<I>wipeclean</I>' command in Linux. The term likely emerged informally as a descriptive way for users to name their personal scripts designed for system cleanup or secure data deletion.


title: PARAMETERS
content:
<b><i>-a</i>, <i>--all</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wipe all known signatures from the device.<br><br><b><i>-b</i>, <i>--backup</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a signature backup file (e.g., <i><b>wipefs-<device>-<offset>.bak</b></i>) before wiping. The backup contains the byte sequence that was overwritten.<br><br><b><i>-f</i>, <i>--force</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the wipe operation, even if the device is mounted or contains a partition table. Use with extreme caution as this can lead to data corruption.<br><br><b><i>-h</i>, <i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><i>-i</i>, <i>--no-empty</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't exit with a non-zero status if no signatures are found for the specified offset or type.<br><br><b><i>-l</i>, <i>--list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all detected signatures from the specified device. This is a non-destructive operation.<br><br><b><i>-n</i>, <i>--no-action</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run. Show what would be done without actually writing any changes to the device. Highly recommended before destructive operations.<br><br><b><i>-O</i>, <i>--offset <offset></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the byte offset where the signature is located. This allows wiping only a specific signature at a precise location.<br><br><b><i>-q</i>, <i>--quiet</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress output messages, only show errors.<br><br><b><i>-r</i>, <i>--raw</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use raw output format for the <i><b>--list</b></i> option, useful for scripting.<br><br><b><i>-t</i>, <i>--type <type></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the signature types to be scanned or wiped. Multiple types can be specified comma-separated (e.g., <i><b>ext4,swap</b></i>). Known types include filesystems (<i><b>ext2</b></i>, <i><b>xfs</b></i>, <i><b>fat</b></i>, <i><b>ntfs</b></i>), LVM, RAID, and partition tables (<i><b>dos</b></i>, <i><b>gpt</b></i>).<br><br><b><i>-V</i>, <i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The block device or partition (e.g., <i><b>/dev/sda</b></i>, <i><b>/dev/sdb1</b></i>) to operate on. This argument is required.<br><br>


title: DESCRIPTION
content:
<i><b>wipefs</b></i> is a utility for erasing filesystem, RAID, or partition table signatures (often called 'magic strings') from a specified block device or partition.<br><br>It is commonly used to prepare a disk or partition for a new filesystem or partition table, especially when a device has previously been used and retains old metadata that might confuse other utilities like <i><b>mkfs</b></i> or <i><b>fdisk</b></i>.<br><br>The command can identify a wide range of signatures, including those for various filesystems (e.g., ext, xfs, fat, ntfs), swap areas, LVM, and RAID. It offers options to list existing signatures (<i><b>-l</b></i>) or perform a dry run (<i><b>-n</b></i>) before committing to a destructive operation, which is highly recommended. As <i><b>wipefs</b></i> directly modifies disk metadata, it requires root privileges and should be used with extreme caution to avoid irreversible data loss.


title: CAVEATS
content:
<ul><li><b>Irreversible Data Loss:</b> <i><b>wipefs</b></i> permanently removes data. Misuse or incorrect device specification can lead to irreparable data loss. Always double-check the target device.</li><li><b>Root Privileges:</b> This command requires superuser (root) privileges to operate on block devices.</li><li><b>Mounted Devices:</b> Wiping a device that is currently mounted, especially with the <i><b>--force</b></i> option, can severely corrupt the filesystem and lead to system instability. Always unmount filesystems before using <i><b>wipefs</b></i> on them.</li><li><b>Partition Tables:</b> Removing partition table signatures (e.g., <i><b>dos</b></i> for MBR, <i><b>gpt</b></i>) will make the entire disk unreadable until a new partition table is created, effectively erasing all partition information.</li></ul>


title: KNOWN SIGNATURES
content:
<i><b>wipefs</b></i> maintains an internal database of known filesystem, RAID, LVM, and partition table signatures (magic bytes). This allows it to accurately identify and target specific metadata for removal. The types recognized by <i><b>wipefs</b></i> can be listed using the <i><b>--help</b></i> output under the <i><b>--type</b></i> option section, which typically includes a wide array of common formats.


title: SAFETY PRECAUTIONS
content:
Before any destructive operation, it is highly recommended to use <i><b>wipefs -l <device></b></i> to list existing signatures and <i><b>wipefs -a -n <device></b></i> for a dry run. Always ensure you are operating on the correct device to prevent accidental data loss on critical disks.


title: HISTORY
content:
<i><b>wipefs</b></i> is a component of the <i><b>util-linux</b></i> project, a venerable collection of essential system utilities for Linux. It emerged to provide a more specific, safer, and user-friendly alternative to generic tools like <i><b>dd</b></i> for removing filesystem or partition metadata. Its development has focused on accurate signature identification and offering protective features like dry-run and listing capabilities, making it a dedicated tool for disk metadata manipulation.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message detailing the available command-line options for <b>wireplumber</b>.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>wireplumber</b> utility and exits.<br><br><b><b>-n</b>, <b>--no-daemon</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <b>wireplumber</b> in the foreground, preventing it from detaching and running as a background daemon. Useful for debugging.<br><br><b><b>-c</b> <i>FILE</i>, <b>--config</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration <i>FILE</i> (a Lua script) to load instead of the default system-wide or user-specific ones.<br><br><b><b>-D</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing more verbose logging which can be helpful for troubleshooting and development purposes.<br><br><b><b>--log-level</b>=<i>LEVEL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity <i>LEVEL</i> for <b>wireplumber</b>. Typical levels range from 0 (error) to 3 (debug), with higher numbers producing more detailed output.<br><br>


title: DESCRIPTION
content:
<b>wireplumber</b> is a crucial component of the PipeWire media server framework, acting as its default session and policy manager. It is responsible for orchestrating the audio, video, and multimedia streams by managing the various nodes, links, and devices within the PipeWire graph.<br><br>Written primarily in Lua, <b>wireplumber</b> implements policies for automatic device detection, input/output routing, stream connections, and resource allocation. It ensures that applications can correctly access and utilize audio and video hardware, handling scenarios like hot-plugging devices, switching default outputs, and managing exclusive access. Essentially, it automates the complex task of connecting applications to the right audio/video paths, making the PipeWire system robust and user-friendly by abstracting much of the underlying complexity.


title: CAVEATS
content:
<b>wireplumber</b> is designed to run as a background daemon, typically started automatically by <b>systemd --user</b> for the current user's session. Direct manual invocation is generally not required for normal operation. Its advanced configuration involves editing Lua scripts, which demands a degree of familiarity with both Lua and the PipeWire ecosystem. Incorrect configurations can lead to audio or video playback issues.


title: CONFIGURATION FILES
content:
<b>wireplumber</b>'s operational behavior and policies are defined through a set of Lua-based configuration files. These files are typically located in system-wide directories such as <i>/usr/share/wireplumber/</i> and <i>/etc/wireplumber/</i>. Users can customize or override default settings by placing modified or new configuration files within their personal configuration directory, commonly found at <i>~/.config/wireplumber/</i>.


title: DAEMON OPERATION
content:
As a persistent background process, <b>wireplumber</b> continuously monitors the PipeWire graph and system events, such as the hot-plugging of audio devices or application requests for audio/video streams. It dynamically manages devices, streams, and connections based on its loaded policies, ensuring seamless and automatic audio and video routing. Its continuous operation is fundamental to the dynamic and flexible nature of the PipeWire multimedia system on Linux.


title: HISTORY
content:
<b>wireplumber</b> was developed as a modern and highly flexible session manager for the PipeWire media server, specifically designed to supersede earlier, less extensible solutions like <b>pipewire-media-session</b>. Its introduction marked a significant step in PipeWire's evolution towards a unified and robust audio, video, and hardware management system on Linux. By leveraging Lua for its policy engine, <b>wireplumber</b> offers enhanced scriptability and control, contributing to PipeWire's goal of replacing or integrating with traditional sound servers like PulseAudio and JACK.


title: SYNOPSIS
content:
<b>wireshark</b> [ <i>options</i> ] [ <i>filter</i> ]<br><br>Common invocation examples:<br><b>wireshark</b> <i>-i eth0</i><br><b>wireshark</b> <i>-r captured.pcap -Y "http.request"</i><br><b>wireshark</b> <i>-k -i any -f "port 80 or port 443"</i>


title: PARAMETERS
content:
<b><i>-i</i> <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network interface to capture packets from (e.g., <i>eth0</i>, <i>wlan0</i>, <i>any</i>).<br><br><b><i>-f</i> <capture filter></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a capture filter using <i>libpcap</i> syntax (e.g., <i>"port 80"</i>, <i>"host 192.168.1.1"</i>). This filters packets before they are written to the capture buffer, reducing overhead.<br><br><b><i>-Y</i> <display filter></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a display filter to the captured packets using <i>Wireshark</i>'s display filter syntax (e.g., <i>"tcp.port == 80"</i>, <i>"ip.addr == 192.168.1.1 and http"</i>). This filters what is shown in the GUI after capture.<br><br><b><i>-r</i> <infile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads packet data from a previously saved capture file (e.g., <i>.pcap</i>, <i>.pcapng</i>).<br><br><b><i>-w</i> <outfile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes captured packet data to a file. This can be used for live captures or when saving an opened file to a new location.<br><br><b><i>-k</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the capture immediately upon launch, bypassing the capture options dialog. This is useful for scripting or quick starts.<br><br><b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>Wireshark</i> version information to the console and then exits.<br><br><b><i>-h</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message, listing all available command-line options and their descriptions.<br><br>


title: DESCRIPTION
content:
<i>Wireshark</i> is a free and open-source packet analyzer that provides a graphical user interface (GUI) for deep inspection of network protocols.<br><br>It allows users to capture live network traffic from various interfaces, such as Ethernet, Wi-Fi, and virtual interfaces, and then analyze the captured data in detail. Each packet can be drilled down to multiple layers, from the physical layer up to the application layer, revealing intricate details of the communication.<br><br><i>Wireshark</i> is widely used by network administrators, security professionals, developers, and educators for network troubleshooting, analysis, software and protocol development, and security auditing. It supports hundreds of protocols and offers powerful filtering capabilities, both for live capture and post-capture analysis, making it an indispensable tool for understanding network behavior and diagnosing complex issues.


title: CAVEATS
content:
To capture live network traffic, <i>Wireshark</i> often requires elevated privileges, typically root or membership in a specific user group (e.g., '<i>wireshark</i>'). Running as root poses security risks; it's recommended to configure user groups for safe packet capture.<br><br><i>Wireshark</i> is a GUI application and therefore requires an X display server to function. For command-line-only packet capture and analysis, the console-based counterpart <i>tshark</i> is the preferred tool.<br><br>Capturing large volumes of traffic on high-speed networks can consume significant system resources (CPU, RAM, disk I/O) and may lead to dropped packets if the system cannot process them quickly enough.


title: CAPTURE FILTERS VS. DISPLAY FILTERS
content:
It's crucial to understand the difference between capture filters and display filters.<br>A <b>capture filter</b> (applied with <i>-f</i>) is set at the packet capture engine level (<i>libpcap</i> on Linux) and determines which packets are saved to the capture file or buffer. These filters are applied <i>before</i> the packets are fully processed by <i>Wireshark</i>, making them efficient for reducing file size and system load.<br>A <b>display filter</b> (applied with <i>-Y</i>) is applied <i>after</i> packets have been captured and loaded into <i>Wireshark</i>'s memory. They control which packets are visible in the GUI, allowing for complex, multi-layered filtering without discarding any raw captured data.


title: PERMISSIONS FOR PACKET CAPTURE
content:
To capture live network traffic, <i>Wireshark</i> needs to access network interfaces in promiscuous mode. On most Linux systems, this typically requires root privileges. However, it's safer and recommended to configure your system to allow non-root users to capture packets. This is usually done by adding the user to a special group (e.g., '<i>wireshark</i>' or '<i>pcap</i>') and setting appropriate permissions on the <i>dumpcap</i> executable (which <i>Wireshark</i> uses internally for capturing). For example:<br><i>sudo usermod -a -G wireshark YOUR_USERNAME</i><br><i>sudo chgrp wireshark /usr/bin/dumpcap</i><br><i>sudo chmod 4755 /usr/bin/dumpcap</i><br>Remember to log out and back in for group changes to take effect.


title: HISTORY
content:
<i>Wireshark</i>'s origins trace back to 1998 when <i>Gerald Combs</i> started developing <i>Ethereal</i> as a side project to troubleshoot network issues. <i>Ethereal</i> quickly gained popularity due to its powerful features and intuitive GUI. In June 2006, due to trademark issues, the project was officially renamed <i>Wireshark</i>. The development continued under the new name, maintaining its open-source nature and community-driven contributions, solidifying its position as the industry-standard network protocol analyzer.


title: SYNOPSIS
content:
<b>wl-copy</b> [<i>OPTIONS</i>] [<i>TEXT...</i>]<br><i>COMMAND</i> | <b>wl-copy</b> [<i>OPTIONS</i>]


title: PARAMETERS
content:
<b><b>-p</b>, <b>--primary</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the <i>primary</i> selection instead of the default <i>clipboard</i> selection.<br><br><b><b>-s</b>, <b>--selection</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specified named selection (e.g., "clipboard", "primary", "secondary").<br><br><b><b>-f</b>, <b>--fork</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Fork the <b>wl-copy</b> process into the background, ensuring the copied data remains available even after the parent process exits.<br><br><b><b>-o</b>, <b>--once</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit after the first successful paste operation by another client that consumes the selection.<br><br><b><b>-c</b>, <b>--clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clear the specified selection, removing any existing content.<br><br><b><b>-n</b>, <b>--no-trim</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not trim trailing newlines from the input content.<br><br><b><b>-t</b>, <b>--type</b> <i>&lt;mime-type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the MIME type of the content being copied (e.g., <i>text/html</i>, <i>image/png</i>). The default is <i>text/plain;charset=utf-8</i>.<br><br><b><b>-u</b>, <b>--unset</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unset the selection immediately when <b>wl-copy</b> exits, making the content unavailable.<br><br>


title: DESCRIPTION
content:
<b>wl-copy</b> is a command-line utility for interacting with the Wayland compositor's clipboard. It allows users to copy text or other data from standard input or command-line arguments directly into the Wayland clipboard buffer. As part of the <b>wl-clipboard</b> project, it provides a crucial bridge for command-line users to integrate with Wayland's modern clipboard mechanisms, which differ significantly from the X11 clipboard system used by tools like <b>xclip</b> or <b>xsel</b>.<br><br><b>wl-copy</b> handles various MIME types, making it versatile for copying not just plain text but also richer data formats. It supports both the standard "clipboard" selection and the "primary" selection (often used for middle-click paste), offering flexibility for different user workflows. Its <b>--fork</b> option is particularly useful for copying data from scripts or processes that terminate, ensuring the copied content remains available. This makes <b>wl-copy</b> an essential tool for scripting and automation in Wayland environments.


title: CAVEATS
content:
<b>Dependency on Wayland Compositor</b>: <b>wl-copy</b> requires a running Wayland compositor to function. It will not work in X11 environments or if no Wayland compositor is active.<br><br><b>Clipboard Persistence</b>: The availability of copied content is dependent on the compositor and other Wayland clients. For persistence when copying from short-lived processes (like shell commands), the <b>--fork</b> option is crucial, as it keeps <b>wl-copy</b> running in the background to serve the data.<br><br><b>MIME Type Compatibility</b>: While <b>wl-copy</b> can specify MIME types, the ability to paste rich content (beyond plain text) depends on the Wayland compositor and the pasting application's support for those specific MIME types.


title: INPUT HANDLING
content:
<b>wl-copy</b> can receive input either as command-line arguments (e.g., <b>wl-copy "Hello World"</b>) or from standard input (e.g., <b>echo "Hello World" | wl-copy</b>). When arguments are provided, they are concatenated with spaces before being copied.


