Displaying input streams using Kdialog

Duncan 1i5t5.duncan at cox.net
Wed May 18 12:01:32 BST 2016


max+kde posted on Wed, 18 May 2016 10:37:16 +0200 as excerpted:

> Hi,
> 
> I have a script which uses kdialog to present some information or
> dialogs to the user. Now I want to present continous information in a
> Kdialog box. Specifically, it will be the progress output of a rsync
> command.
> 
> Is there a way to pipe the output to kdialog? Alternatively, is there a
> way to convince kdialog to display information which are not fully
> avaliable yet?

The only kdialog type that I'm aware of that can do dynamic updating like 
that is the --progressbar dialog.  When you create it with the
kdialog --progressbar invocation, a dbus reference ID is printed on 
STDOUT.  If this is saved to a variable, then you can call qdbus to 
update the text and the progress value, and eventually close the progress 
bar dialog if desired.

There's a kdialog tutorial on techbase that has a couple nice examples, 
one without a cancel button that shows text and progress updates, and a 
second with a cancel button that doesn't show text updates, only progress 
updates.

(Link will wrap here as posted and I'm not going to bother unwrapping it 
so do that manually, should be one long link line.)

https://techbase.kde.org/Development/Tutorials/
Shell_Scripting_with_KDE_Dialogs#Progress_Dialogs

You could either figure out the number of progress updates ahead of time, 
or maybe if the rsync is local, do a dry-run first, counting the lines or 
something, and then do the real rsync, updating progress based on the 
number of lines.

Or don't actually update the progress value at all, and just use the 
output from rsync to update the text to show what dir it's working on at 
that moment.


Another alternative would be not to use kdialog to follow the progress at 
all, but instead, use a customized konsole invocation, setting title, 
size, perhaps hiding the menubar and tabbar, and invoking the command 
direct from your script, something like:

konsole --hide-menubar --hide-tabbar --title whatever (a qt option) -e 
tail -f .bashrc

You may or may not want the --noclose option as well.  Without it, as 
soon as the command exits, the konsole window closes.

With noclose, if you actually ran your rsync as the command (or put it in 
a script and simply invoked the now nested script), you could background 
the initial konsole call, let it output the normal rsync output to the 
konsole window, monitor it via tee or waiting for the rsync command to 
complete in the script, and close the konsole window when appropriate 
from the script.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

___________________________________________________
This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.


More information about the kde mailing list