How to? Is it possible to freeze one side of the console?

  • This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.
Feb 23, 2012
238
3
#1
I often run command line utilities which output a steady stream of information to the console (that is, every 5 seconds or so another line is output). At times I need to scroll back through this console output, to review the progress of the task. However, since the task is continually outputting data, I can't simply browse the console buffer with alt-pgup, because whenever a new line is output to the console, the console buffer jumps all the way back to the end.

Obviously, I can do a "select all", copy the entire buffer, and paste it into a separate text editor to examine the contents. But that's not very streamlined or convenient. I'd prefer to have a way to scroll up within TCC itself, without having the console jump back down with every new line.

I was wondering whether it might be possible to accomplish this with the vertical slider. That is, is it possible to "freeze" one side of the console, so that, say, the left side would show the updates on the bottom as they are output, while the right side would allow me to scroll around inside the buffer, without having the buffer jump back down to the bottom with every new line?
 
#2
Just the thought of it reminds me of DesqView (anyone?) and of being able to set the scrolling region of a UNIX console with escape sequences (IIRC, ckermit (anyone?) and real VT terminals could do that too). I'm pretty sure the answer is "no" since Windows simply does not have the capability.

But it makes me wonder. TCMD has the capability of showing you (very efficiently) what's going on in a hidden console. So I wonder if it's possible for one console (maybe a second instance of TCC) to "mirror" (how about a MIRROR command) what's going on in another console (Rex?) ... with the possibility of suspending the mirroring (quite possibly with the loss of any output produced before the mirroring is resumed).

... or could TCMD (theoretically) show the same console in two tabs, one of them stoppable?

Anyway (to Avi) you can suspend console output with Ctrl-S (resume with any key) and examine the buffer via the scroll bar. I believe this actually pauses the process or thread producing the output.
 
Feb 23, 2012
238
3
#3
Anyway (to Avi) you can suspend console output with Ctrl-S (resume with any key) and examine the buffer via the scroll bar. I believe this actually pauses the process or thread producing the output.
Hi Vince,

Thanks for your response (and for the loving memory of Desqview on the 386). I'd love to see TC include the possibility to stop the console input in one of the vertical panes, even as the task continues working and outputting data in the other pane. If this is not possible now, I'll add it as a request on the user voice forum.

In the meantime, though, I'd like to get the Ctrl-S option that you mentioned working. This keystroke does not pause the task on my computer (I'm running in a Take Command window). I figured that perhaps I just have it mapped differently in my configuration, but a review of the Customize/Keyboard dialog did not reveal any relevant commands (that is, there was no "Pause" or "Stop" command to which I might assign a keystroke). Can you please provide more information on the Ctrl-S option, or a link to the relevant page in the help file?

Thanks!
 
Feb 23, 2012
238
3
#4
Hi Vince,
Were you perhaps referring to the Ctrl-S option included within Tail, Head, and Type? In those commands Ctrl-S does effectively stop the output. However, as far as I can tell, this option is specific to those commands, and does not affect other tasks.
- Avi
 
#5
Ctrl-S works automatically in consoles. And for me it works in TC also. Check how your Ctrl keys are configured in TC's options.

And (Rex?) while I have "Left Ctrl Key" checked and "Right Ctrl Key" unchecked, Ctrl-S with either one stops output in TakeCmd.
 

rconn

Administrator
Staff member
May 14, 2008
10,100
85
#7
I was wondering whether it might be possible to accomplish this with the vertical slider. That is, is it possible to "freeze" one side of the console, so that, say, the left side would show the updates on the bottom as they are output, while the right side would allow me to scroll around inside the buffer, without having the buffer jump back down to the bottom with every new line?
Yes, that's what the splitter window is for.
 
Feb 23, 2012
238
3
#8
Yes, that's what the splitter window is for.
Hi Rex,

I had thought the splitter window would be helpful here. However, it doesn't seem to help in my situation. Whenever my console program outputs a new line, *both* of my splitter windows immediately scroll all the way down to the bottom.

That is: I am running a console program which outputs a line every 5 seconds or so. With my left window showing the current output, I switch to the right window and begin scrolling upward to review previous content. However, as soon as the console program outputs another line, the right window pops down to the bottom again.

What I was hoping for was to see the output as it comes in the left window, but all the while to scroll back upward in the right window, without the window being forced back down to the bottom.

Is there any way to accomplish this?
 

rconn

Administrator
Staff member
May 14, 2008
10,100
85
#10
But it makes me wonder. TCMD has the capability of showing you (very efficiently) what's going on in a hidden console. So I wonder if it's possible for one console (maybe a second instance of TCC) to "mirror" (how about a MIRROR command) what's going on in another console (Rex?) ... with the possibility of suspending the mirroring (quite possibly with the loss of any output produced before the mirroring is resumed).
Already done with splitter windows.
 
Feb 23, 2012
238
3
#11
The splitter window will only track the "master" window when the caret is on the last line. Click somewhere else in the window and it will no longer scroll.
Hi Rex,

I've now managed (for the first time!) to get the splitter window to stay in place without jumping down, and in doing so I think I've discovered the real issue.

Whenever I scroll my windows, I do so by holding down the right-alt key together with PageUp. And it always jumps back when I let go of Alt. But now I see that if I use the left-alt instead of the right-alt, it actually stays in place! (I imagine that most people would use the left-alt key to begin with; however, on my keyboard the pgup and pgdown keys are on the left side; hence I combine them with the right-alt key with my right hand).

So, the real question now is, what is going on with the right-alt key that causes the display to jump back to the bottom, and how can this be circumvented?

[The splitter window feature has been there for nearly a year, and yet I've never understood how it was meant to work until now, because whenever I tried it I would naturally use the right-alt key, and the output would always jump back to the bottom. Now that I see how it works with the left-alt key I finally understand how useful a feature this can be!]
 
#12
So, the real question now is, what is going on with the right-alt key that causes the display to jump back to the bottom, and how can this be circumvented?
In TCMD's Option dialog -> Tab Windows you can independently select between the left and right ALT keys and CTRL keys to be used by TCMD, and which to pass to programs running in tabs. The one TCMD uses is never seen by console programs running in tabs.
--
HTH, Steve
 
Feb 23, 2012
238
3
#13
In TCMD's Option dialog -> Tab Windows you can independently select between the left and right ALT keys and CTRL keys to be used by TCMD, and which to pass to programs running in tabs. The one TCMD uses is never seen by console programs running in tabs.
--
HTH, Steve
Thanks so much, Steve! That solved the problem!

(Rex had once said that in the splitter window any regular keypress would necessarily return the cursor back to the bottom; but I didn't realize that this would include modifier keys like Ctrl and Alt. Now I see that even just hitting Ctrl or Alt will return the cursor to the bottom, unless TCMD is configured to specifically swallow up those keys).
 
#16
Look for "splitter windows" in the Help index. The discussion is at the bottom of the "Tab Windows" page.
Thanks. I did a Search in the help file for "splitter" and got "No topics found." I then did a search for "split" and got "Split File View" and "Synchronized Scrolling" which both refer to the "view" command. That's when I asked.
 
Apr 13, 2010
190
2
57
The Hague
#19
I often run command line utilities which output a steady stream of information to the console (that is, every 5 seconds or so another line is output). At times I need to scroll back through this console output, to review the progress of the task. However, since the task is continually outputting data, I can't simply browse the console buffer with alt-pgup, because whenever a new line is output to the console, the console buffer jumps all the way back to the end.

Obviously, I can do a "select all", copy the entire buffer, and paste it into a separate text editor to examine the contents. But that's not very streamlined or convenient. I'd prefer to have a way to scroll up within TCC itself, without having the console jump back down with every new line.

I was wondering whether it might be possible to accomplish this with the vertical slider. That is, is it possible to "freeze" one side of the console, so that, say, the left side would show the updates on the bottom as they are output, while the right side would allow me to scroll around inside the buffer, without having the buffer jump back down to the bottom with every new line?
Personally, I would run the job in an invisible / minimized console and pipe the output to a file. As part of starting the job, also launch a VIEW /T on that file. Lots of plusses here; you can use many ways of navigating the output, including searching, filtering, copying and starting other programs with pieces of it. There are many more neat things you can do with a setup lke that,...

Hope to help,
DJ
 
Feb 23, 2012
238
3
#20
Personally, I would run the job in an invisible / minimized console and pipe the output to a file. As part of starting the job, also launch a VIEW /T on that file. Lots of plusses here; you can use many ways of navigating the output, including searching, filtering, copying and starting other programs with pieces of it. There are many more neat things you can do with a setup lke that,...

Hope to help,
DJ
Thanks! I'll try it out. (I imagine, though, that the output would be somewhat delayed, because the actual data would only be picked up by View when the file cache is flushed. I wonder if there is any way to force the pipe to flush the cache after each line?)