Search Wiki:

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.
ScreenShot
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)
Last edited Jul 9 2007 at 9:32 PM  by Jaykul, version 8
Comments
ghosttie wrote  Jul 9 2007 at 5:15 PM  
"Autohide upon loosing focus." - loosing should be losing

Sorry to be a nag, but it annoys me when people do that :)

Jaykul wrote  Jul 9 2007 at 9:33 PM  
yeah, fixed.

jmanning wrote  Jul 13 2007 at 8:06 PM  
same bug, different instance - "and hides when it looses focus"

egb wrote  Aug 22 2007 at 5:01 PM  
Piping output to "more" or "less" doesn't seem to have the desired effect. Is this supposed to work?

Ed

Jaykul wrote  Aug 24 2007 at 3:08 AM  
Well, not exactly. Those are native apps that don't just use stdio...

Updating...