Project Description
PoshConsole is a more modern PowerShell Console. We aim to have a complete open source implementation of the PSHostUserInterface and PSRawHostUserInterface written in WPF and including a custom ConsoleTextBox control which could be reused for other purposes. Of course, our PowerShell Console will also include lots of powerful features like enhanced tab-completion and keyboard navigation, PoshConsole will also take advantage of WPF features to make it the prettiest console out there! It is already the only PowerShell Console with a Quake-like mode where the main window snaps to the top of the screen and slides down when a hotkey is pressed, and hides when it loses focus. It has separate options for setting the window's opacity, always on top, and show in taskbar ... and has fully configurable colors. We're committed to making most of these things optional, with choices available as settings -- including the hotkeys (emacs mode, anyone?), colors, etc. Currently, they are available via $Host.PrivateData.Settings, but eventually there will be a custom configuration panel.
Full Size Image
Features
- All of the configurable settings are available in the $Host.PrivateData.Settings variable.
- Each sequence of prompt, command, output are paired into a logical unit -- a RichTextBox Paragraph.
- Triple-Click to select a whole sequence.
- Hold Control while pressing the Up or Down arrows to navigate a sequence at a time.
- Pressing Ctrl+C without selecting text will automatically select (and copy) the previous sequence, and pressing it repeatedly will select successively more sequences.
- Options for:
- Autohide upon losing focus.
- Animation on hiding.
- Quake Mode
- Nice GUI for Write-Progress ...
Technical
- Written entirely in C# using WPF for the UI, Event Handling, etc.
- Based on ConsoleTextBox, a control I created based on the WPF RichTextBox.
Many things left to do:
- PSHostRawUserInterface.GetBufferContents and PSHostRawUserInterface.SetBufferContents are still not quite right.
- PSHostRawUserInterface.ScrollBufferContents is not implemented at all
- There's no proper input buffering (for keystrokes)
- PSHostRawUserInterface.KeyAvailable is not implemented
- PSHostRawUserInterface.ReadKey is not implemented
- PSHostUserInterface.ReadLineAsSecureString is not implemented
- PSHostRawUserInterface.PromptForCredential is not implemented
- TabComplete still needs work (does not yet complete paths at all)
|