Ever wished Console.ReadLine() could give you real-time input? Want full control over what the user types as they type it?
Introducing buffer — a lightweight NuGet package that gives you real-time input handling and total buffer control in C#. Perfect for building interactive CLI tools, REPLs, or anything where ReadLine() just doesn’t cut it.
✅Real-time updates while users type📜Real-time Syntax highlighting.🧠Manual control over the input buffer🧵Thread-safe & supports multithreading🔠Access buffer aschar[]orstring💻Compatible with a wide range of .NET Frameworks🎉Emoji support for fun prompts🔒Secure input handling🛠️Easy to use and integrate📦Lightweight and fast🔧Customizable buffer size
Add it via CLI:
dotnet add package bufferOr visit the NuGet page →
- Initialize the input buffer
- With a buffer size
- Without a buffer size
- Start listening for input
- Read the buffer manually as
char[]orstring - Clear the buffer when you’re done
using Prad.Buffer;
...
PradBuffer InputBuffer = new PradBuffer();
// Start capturing input (does NOT return value)
InputBuffer.GetInput();
// Read it manually
string value = InputBuffer.GetBufferAsString();
// Clear when done
InputBuffer.ClearBuffer();using Prad.Buffer;
...
PradBuffer InputBuffer = new PradBuffer(10);
// Start capturing input (does NOT return value)
InputBuffer.GetInput(); // Only 10 characters can be stored. (0 to 9)
// Read it manually
string value = InputBuffer.GetBufferAsString();
// Clear when done
InputBuffer.ClearBuffer();PradBuffer Buffer = new PradBuffer();
Console.WriteLine("Enter something to get started, ");
string s = "";
// Supports Console Colors
Buffer.SyntaxHighlights.Add("prad", ConsoleColor.Red);
// Supports Integers, color will be selected with respective to ConsoleColor enum.
Buffer.SyntaxHighlights.Add("static", 9);
// Directly supports ANSI Escape codes. **Beware any mistakes CAN and WILL break the input.**
Buffer.SyntaxHighlights.Add("public", "\x1b[32m"); // Green ANSI Escape code.
// ! Throws exception if any other data type is being used.
// Buffer.SyntaxHighlights.Add("=", 56.3d);
Buffer.EnableSyntaxHighlighting = true;
while(true){
Buffer.GetInput("> ");
s = Buffer.GetBufferAsString();
Buffer.ClearBuffer();
if(s == "exit") break;
Console.WriteLine($"Value Entered : \"{s}\"");
}Here is a code example which uses Multithreading to get the input buffer in real-time.
using Prad.Buffer;
class sample_program {
static PradBuffer buffer = new PradBuffer();
static void Main(string[] args) {
Thread thread = new Thread(invoker);
thread.Start();
buffer.GetInput("command > ");
string value = buffer.GetBufferAsString();
buffer.ClearBuffer();
Console.WriteLine(value);
}
static void invoker(){
if(buffer.Length > 0)
Console.WriteLine(buffer.GetBufferAsString());
Thread.Sleep(1000);
invoker();
}
}🛠️ Unlock the full power of buffer by using multi-threading to get realtime data even before the user has completed typing.
InputBuffer.GetInput();<waits here for input>InputBuffer.GetInput("command > ");command > <waits here for input>Contributions are always welcome!
# 1. Fork the repo
# 2. Create a branch
git checkout -b feature-name
# 3. Make changes & commit
git commit -m "Add feature-name"
# 4. Push and open PR
git push origin feature-name- Stick to the existing code style
- Write helpful commit messages
- Document new features
- Add tests when possible ✅
- 📦 NuGet Package
- 🧑💻 GitHub Source
- 📝 Blog Post
Give it a ⭐ if you like it and share it with your fellow devs!


