{"id":23564242,"url":"https://github.com/nstechbytes/blurinput","last_synced_at":"2025-11-01T20:30:32.384Z","repository":{"id":268688316,"uuid":"904664649","full_name":"NSTechBytes/BlurInput","owner":"NSTechBytes","description":"BlurInput is a Rainmeter plugin that provides a transparent and interactive input field for users. Designed for seamless integration into your Rainmeter skins, it allows for text input with various validation options and clipboard controls, all while maintaining a stylish and modern translucent appearance.","archived":false,"fork":false,"pushed_at":"2025-01-30T13:38:44.000Z","size":8020,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T14:33:09.921Z","etag":null,"topics":["blur","plugin","rainmeter","rainmeter-plugin","rainmeter-skin","skin","transparent"],"latest_commit_sha":null,"homepage":"https://nstechbytes.github.io/Nasir-Shahbaz/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NSTechBytes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-17T10:20:35.000Z","updated_at":"2025-01-30T13:38:47.000Z","dependencies_parsed_at":"2024-12-18T10:36:02.616Z","dependency_job_id":"09623680-64f1-46cb-bd59-50661b696e90","html_url":"https://github.com/NSTechBytes/BlurInput","commit_stats":{"total_commits":11,"total_committers":1,"mean_commits":11.0,"dds":0.0,"last_synced_commit":"8300ec003d55bf87aeb169f9e051e464ddf89b65"},"previous_names":["nstechbytes/blurinput"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSTechBytes%2FBlurInput","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSTechBytes%2FBlurInput/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSTechBytes%2FBlurInput/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSTechBytes%2FBlurInput/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NSTechBytes","download_url":"https://codeload.github.com/NSTechBytes/BlurInput/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239323717,"owners_count":19620068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blur","plugin","rainmeter","rainmeter-plugin","rainmeter-skin","skin","transparent"],"created_at":"2024-12-26T17:13:34.437Z","updated_at":"2025-11-01T20:30:32.340Z","avatar_url":"https://github.com/NSTechBytes.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BlurInput\n\n**BlurInput** is a Rainmeter plugin that provides a transparent and interactive input field for users. Designed for seamless integration into your Rainmeter skins, it allows for text input with various validation options and clipboard controls, all while maintaining a stylish and modern translucent appearance.\n\n---\n\n## Features 🚀\n\n- 🌟 **Transparent Input Field**: A visually appealing input box with a blurred or translucent background.\n- ⌨️ **Custom Input Types**:\n  - Strings\n  - Integers\n  - Letters\n  - Alphanumeric\n  - Hexadecimal\n  - Float\n  - Email\n  - Custom character sets\n- 🔄 **Undo/Redo Support**: Easily revert or redo changes while typing.\n- 📝 **Clipboard Operations**: Supports **Copy**, **Paste**, and **Cut** operations.\n- ⚡ **User-Friendly Commands**: Trigger actions like starting/stopping input, clearing text, and showing a context menu via Rainmeter bangs.\n- 🛡️ **Input Validation**: Ensures data integrity with built-in validators for different input types.\n- ✨ **Customizable**: Supports character limits, dynamic input length, and text cursor behavior.\n\n---\n\n## Installation 📥\n\n1. Download the latest release from the [Releases](https://github.com/NSTechBytes/BlurInput/releases) section.\n2. Copy the `BlurInput.dll` file to the **Plugins** folder of your Rainmeter installation:\n   ```\n   C:\\Program Files\\Rainmeter\\Plugins\n   ```\n3. Add the `BlurInput` plugin to your Rainmeter skin.\n\n---\n\n## Usage 🛠️\n\nTo integrate the **BlurInput** plugin into your Rainmeter skin, use the following template:\n\n### Basic Example\n\n```ini\n[Rainmeter]\nUpdate=1000\n\n[Metadata]\nName=BlurInput Test Skin\nAuthor=NS TEch Bytes\nInformation=Usage example to use plugin.\nVersion=Version 1.5\nLicense=Creative Commons BY-NC-SA 3.0\n\n[Variables]\nText=Type Here\n\n;===================================================================================================================;\n[InputHandler]\nMeasure=Plugin\nPlugin=BlurInput\nMeterName=Text_1\n;Cursor=|\n;Password=1   \nMultiline=1 \n;FormatMultiline=1\n;InputLimit=0   \n;ViewLimit=0   \nDefaultValue=#Text#\nInputType=String\n;AllowedCharacters=abc\nUnFocusDismiss=1\n;ShowErrorDialog=1\n;FormBackgroundColor=255,250,250\n;FormButtonColor=136,132,132\n;FormTextColor=6,6,6\n;SetInActiveValue=0\n;InActiveValue=Any Value\nOnDismissAction=[!Log \"Dismiss\"]\n;ForceValidInput=1\nOnEnterAction=[!Log \"\"\"[InputHandler]\"\"\"][!WriteKeyValue Variables Text \"\"\"[InputHandler]\"\"\"]\nOnInvalidAction=[!Log  \"UnValidInput Type\" \"Debug\"]\nOnESCAction=[!Log \"\"\"[InputHandler]\"\"\"]\nDynamicVariables=1\n;RegExpSubstitute=1\n;Substitute=\"\\n\":\"#*CRLF*#\"\n;===================================================================================================================;\n\n[BackGround]\nMeter=Shape \nShape=Rectangle 0,0,800,400,8 |StrokeWidth 0 | FillColor 22,22,22,200\nDynamicVariables=1\n\n[Text_1]\nMeter=String\nText=#Text#\nFontSize=22\nFontColor=255,255,255\nX=10\nY=10\nAntialias=1\nFontWeight=200\nstringAlign = Left\nFOntFace=Arial\nDynamicVariables=1\nLeftMouseUpAction=[!CommandMeasure InputHandler \"Start\"]\n\n\n\n\n```\n\n---\n\n### Plugin Bangs (Commands)\n\nThe following bangs can be used to interact with the input field:\n\n| Bang                            | Description                     |\n| ------------------------------- | ------------------------------- |\n| `!CommandMeasure \"start\"`     | Starts the input field.         |\n| `!CommandMeasure \"stop\"`      | Stops the input field.          |\n| `!CommandMeasure \"cleartext\"` | Clears all text in the field.   |\n| `!CommandMeasure \"copy\"`      | Copies text to the clipboard.   |\n| `!CommandMeasure \"paste\"`     | Pastes text from the clipboard. |\n| `!CommandMeasure \"cut\"`       | Cuts text to the clipboard.     |\n| `!CommandMeasure \"redo\"`      | Redoes the last action.         |\n| `!CommandMeasure \"undo\"`      | Undoes the last action.         |\n| `!CommandMeasure \"context\"`   | Opens the context menu.         |\n\n---\n\n### Custom Input Validation 🛡️\n\nYou can validate input with specific types:\n\n- **String**: Allows all characters.\n- **Integer**: Allows numbers and a negative sign at the start.\n- **Letters**: Accepts only alphabetical characters.\n- **Alphanumeric**: Accepts letters and numbers.\n- **Hexadecimal**: Allows hexadecimal characters (A-F, 0-9).\n- **Float**: Accepts floating-point numbers.\n- **Email**: Ensures valid email format.\n- **Custom**: Use the `AllowedCharacters` property to specify accepted characters.\n\nExample:\n\n```ini\nInputType=Custom\nAllowedCharacters=abc123\n```\n\n---\n\n## General Keyboard Actions\n\n| **Action**      | **Key** | **Description**                                                                     |\n| --------------------- | ------------- | ----------------------------------------------------------------------------------------- |\n| **Backspace**   | 8             | Removes the character before the cursor position.                                         |\n| **Delete**      | 46            | Removes the character at the cursor position.                                             |\n| **Enter**       | 13            | Submits the input (if not in multiline mode) or inserts a newline (if in multiline mode). |\n| **Esc**         | 27            | Executes the assigned `OnESCAction` and stops input.                                    |\n| **Arrow Left**  | 37            | Moves the cursor one position to the left.                                                |\n| **Arrow Right** | 39            | Moves the cursor one position to the right.                                               |\n| **Home**        | 36            | Moves the cursor to the beginning of the text.                                            |\n| **End**         | 35            | Moves the cursor to the end of the text.                                                  |\n| **Tab**         | 9             | Inserts a tab space at the current cursor position.                                       |\n| **Caps Lock**   | 20            | Toggles the Caps Lock state.                                                              |\n\n## Ctrl + Keyboard Shortcuts\n\nThese shortcuts require the **Ctrl** key to be pressed along with a specific key:\n\n| **Action**          | **Shortcut** | **Description**                                                                                                 |\n| ------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------- |\n| **Copy**            | Ctrl + C           | Copy the current text to the clipboard.                                                                               |\n| **Paste**           | Ctrl + V           | Paste text from the clipboard.                                                                                        |\n| **Cut**             | Ctrl + X           | Cut the current text to the clipboard.                                                                                |\n| **Undo**            | Ctrl + Z           | Undo the last change.                                                                                                 |\n| **Redo**            | Ctrl + Y           | Redo the last undone change.                                                                                          |\n| **Execute OnEnter** | Ctrl + Enter       | Executes the action assigned to the `OnEnterAction` only when `Multiline=1`, otherwise uses only **Enter**. |\n\n## Available Options\n\n| Name                | Default Value | Require      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n| :------------------ | :------------ | :----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **MeterName** | None          | Must Provide | The `MeterName` is a mandatory configuration parameter in the BlurInput plugin. It specifies the name of the \u003cbr /\u003eRainmeter meter that will visually display the text input managed by the plugin.\u003cbr /\u003eThe MeterName is used to dynamically update the meter's text with the input provided by the user. The text\u003cbr /\u003e displayed can be the raw input, a masked version (e.g., for passwords), or modified using substitution rules.                                                                                                                                                                                                        |\n| **Cursor**    | **\\|**  | Optional     | The Cursor marks the location where the next character will be inserted or deleted within the text buffer.\u003cbr /\u003eBy default, the Cursor is represented by a vertical bar but it can be customized.                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| Password            | 0             | Optional     | When Password is enabled `Password=1`, the text entered by the user is not shown directly in the text meter. Instead, each\u003cbr /\u003e character is replaced with a masking symbol `*`.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| Multiline           | 0             | Optional     | When Multiline is enabled `Multiline=1`, the plugin treats the text input as multi-line. This means users can insert line\u003cbr /\u003e breaks using the `Enter key`, and the text buffer will handle multiple lines.                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| FormatMultiline     | 0             | Optional     | When `FormatMultiline=1`, the plugin replaces all line breaks \\r\\n or \\n in the TextBuffer with a single space , effectively \u003cbr /\u003eflattening the text into a single line.\u003cbr /\u003eIf `FormatMultiline=0`, no changes are made to the text buffer, and it retains its multi-line format.                                                                                                                                                                                                                                                                                                                                                        |\n| InputLimit          | 0             | Optional     | When InputLimit is set to a positive integer e.g.,`InputLimit=50`, it limits the maximum number of characters that can be\u003cbr /\u003e entered into the text buffer.\u003cbr /\u003eIf a user attempts to type beyond this limit, the input is ignored.                                                                                                                                                                                                                                                                                                                                                                                                         |\n| ViewLimit           | 0             | Optional     | Control how much of the input text is visible in the meter, essentially defining the maximum width of the text displayed\u003cbr /\u003eto the user. This is particularly useful when you want to display a portion of the text or manage the overflow within a \u003cbr /\u003efixed-width display area.\u003cbr /\u003eIf `ViewLimit=0`, the full length of the TextBuffer is displayed, regardless of how many characters \u003cbr /\u003eit contains. There is no truncation, and the text appears as entered.                                                                                                                                                                     |\n| DefaultValue        | Null          | Optional     | Defines the default text that appears in the input field when it is first loaded or when it is cleared. This value provides\u003cbr /\u003eusers with a hint, example, or placeholder text, guiding them on what type of input is expected.                                                                                                                                                                                                                                                                                                                                                                                                                |\n| InputType           | String        | Optional     | Define the type of data that the input field will accept. It determines the kind of validation applied to the user's input, ensuring\u003cbr /\u003e that only the specified type of data is allowed. This setting allows for multiple predefined input types or a custom set of allowed\u003cbr /\u003e characters, providing flexibility based on the desired input requirements. It supports a range of predefined types like \u003cbr /\u003e`String`, `Integer`, `Float`, `Letters`, `Alphanumeric`, `Hexadecimal`, and `Email`, as well as a `Custom` option for more specific \u003cbr /\u003evalidation. This flexibility allows for a tailored input experience |\n| AllowedCharacters   | Null          | Optional     | The AllowedCharacters setting defines a list of characters that are allowed for input when the ` InputType` is set to ` \"Custom\"`.\u003cbr /\u003e If you want to allow only numeric digits and alphabetic letters (both lowercase and uppercase), you would set the \u003cbr /\u003eAllowedCharacters to ` \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"`.                                                                                                                                                                                                                                                                                 |\n| UnFocusDismiss      | 0             | Optional     | When `UnFocusDismiss` is set to `1`, the input field will be dismissed automatically when it loses focus.\u003cbr /\u003eThis is particularly useful for situations where you want the input to be transient, only visible while the user is interacting \u003cbr /\u003ewith it.\u003cbr /\u003eIf `UnFocusDismiss` is set to `0`, the input field will remain visible and active even when it loses focus.                                                                                                                                                                                                                                                           |\n| ShowErrorDialog     | 0             | Optional     | If `ShowErrorDialog` is set to 1, the plugin will display a dialog box such as a pop-up containing an error message when\u003cbr /\u003einvalid input is entered, or an error condition occurs.\u003cbr /\u003eThe Dialog will be displayed after submitting text.                                                                                                                                                                                                                                                                                                                                                                                                 |\n| SetInActiveValue    | 0             | Optional     | if `ShowErrorDialog` is set to 1,then the plugin set the value of  `InActiveValue` instead of` DefaultValue` .when the input field dismiss or other \u003cbr /\u003eaction is performed.                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| InActiveValue       | Null          | Optional     | The text of InActiveValue will be defined in that option.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| OnDismissAction     | Null          | Optional     | Defines the action or behavior that occurs when the input field is dismissed or loses focus. This can happen, for example,\u003cbr /\u003ewhen the user clicks away from the input field or when any action is performed that causes the input field to no longer be \u003cbr /\u003eactive.                                                                                                                                                                                                                                                                                                                                                                         |\n| OnEnterAction       | Null          | Optional     | Defines the action or behavior that occurs when the user presses the `Enter key` while interacting with the input field. \u003cbr /\u003eThis setting is useful for triggering specific events, such as submitting the input, running a script, or switching focus to \u003cbr /\u003eanother element, based on the user's input submission.                                                                                                                                                                                                                                                                                                                       |\n| OnInvalidAction     | Null          | Optional     | When a user enters invalid data such as text when only Integers are allowed, the validation function detects the\u003cbr /\u003e failure and triggers the `OnInvalidAction` after submitting text.                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| OnESCAction         | Null          | Optional     | Defines the action or behavior that occurs when the user presses the `ESC key` while interacting with the input field.\u003cbr /\u003eThis setting is useful for triggering specific events, such as submitting the input, running a script, or switching focus to \u003cbr /\u003eanother element, based on the user's input submission.                                                                                                                                                                                                                                                                                                                         |\n| ForceValidInput     | 0             | Optional     | If `ForceValidInput` is set to ` 1`, the plugin will enforce strict validation rules for the user input based on the InputType.\u003cbr /\u003eFor example, if the InputType is set to `Integer`, the plugin ensures that only digits and possibly a negative sign at the \u003cbr /\u003estart are allowed.\u003cbr /\u003eIf the user enters an invalid character based on the validation rules, the input will be rejected.                                                                                                                                                                                                                                           |\n| FormBackgroundColor | 30,30,30      | Optional     | The FormBackgroundColor refers to the background color of the form in your ` ContextForm` and the `ErrorDialog` class.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| FormButtonColor     | 70,70,70      | Optional     | The FormButtonColor refers to the button color of the form in your `ContextForm` and the ` ErrorDialog` class.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| FormTextColor       | 255,255,255   | Optional     | The FormTextColor refers to the text color of the form in your `ContextForm` and the `ErrorDialog` class.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n\n## Contributing 🤝\n\nContributions are welcome! If you have ideas for enhancements, bug fixes, or additional features, please submit an issue or pull request.\n\n---\n\n## License 📄\n\nThis project is licensed under the Apache License. See the [LICENSE](LICENSE) file for details.\n\n---\n\n## Credits 💡\n\n- Developed by **[Nasir Shahbaz]**.\n- Inspired by the need for a cleaner, transparent input field in Rainmeter.\n\n---\n\nEnjoy using **BlurInput** and make your Rainmeter skins more interactive and stylish! 🎨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnstechbytes%2Fblurinput","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnstechbytes%2Fblurinput","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnstechbytes%2Fblurinput/lists"}