[mc] Notifying about errors from user menu items?
Guy Stalnaker
jimmyg521 at gmail.com
Sat Aug 24 22:23:01 UTC 2024
TL;DR
Hello - I was intrigued by your post to the list, so I did some
experimenting about ways to get output from a command into a notification
dialog such as you show.
With a bit of CLI fiddling and work in MC I found a way to use redirection
to a file, the contents of which can then be used by notify-send. This way
you can use the same notify-send syntax for any use of it. Thus ...
$ <command plus syntax> 2>&1 /tmp/tmp_out && notify-send --urgency=normal
-t 10000 -i dialogerror -a "ERROR" "$(cat /tmp/tmp_out)"
My test usage from a terminal was:
$ cat ./tmp 2>&1 | tee /tmp/tmp_out && notify-send -i dialogerror -a
"ERROR" "$(cat /tmp/tmp_out)"
Where a file named 'tmp' does not exist. The cat command will respond with
a "does no exist" error. That command above creates the tmp file and a
notification popup is displayed with the expected "does not exist" error
output.
This puts both STDOUT and STDERR into that /tmp/tmp_out file. If you only
want stderr, modify the "2>&1" part after the command to "2>" (that is
remove the "&1" part).
One can also add a subsequent command to remove that temp file, but it
should be overwritten by every command call since the syntax is "2>&1" or
"2>" (if one uses two >>, then the output is appended, which is not what
one would want in this usage).
Here's what my test UserMenu item has in it for only STDERR:
[code]
0 Convert mp3 file(s) to wav
set -x
CMD='/usr/bin/lame --decode'
for i in %s ; do
$CMD "$i" 2> /tmp/tmp_out && notify-send -i dialogerror -a "ERROR"
"$(cat /tmp/tmp_out)"
done
set +x
[/code]
And I get some output one can see with CTRL-o after the Notify dialog exits.
> $ /bin/sh /tmp/mc-guyst/mcusrGDE6S2
+ CMD=/usr/bin/lame --decode
+ /usr/bin/lame --decode 06-the-mysterious-mr.-quin-agatha-christie.png
+ cat /tmp/tmp_out
input: 06-the-mysterious-mr.-quin-agatha-christie.png
(44.1 kHz, 2 channels, raw PCM data)
output: 06-the-mysterious-mr.-quin-agatha-christie.png.wav
(16 bit, Microsoft WAVE)
Frame# 29/29 0 kbps
+ set +x
To get an error, I put the cursor in MC on an image file, which lame cannot
convert. The /tmp/tmp_out file is successfully created and notify-send does
put up a notification dialog as desired. In MC %s and %S are macro
substitutions for the selected files: The tagged files if there are any.
Otherwise the current file. It's interesting that set -x doesn't seem to
"see" what follows the && in the command line as it's not shown in the
output (the cat command is, but not the notify-send and its params).
When it's working as desired one can remove the set syntax, or keep it as a
way of always seeing the output. One can also put in code to explicitly
remove the /tmp/tmp_out file, but I'd rather keep it so it can be checked
in anohther terminal or with Ctrl-o since it will always be overwritten the
next time this is used.
I don't know if there is a Midnight-Commander way to pass command error
output into MC, but this is right useful in my opinion.
Thanks for your list email that got me thinking of it.
--
“Happiness is the meaning and the purpose of life, the whole aim and end of
human existence.”
― Aristotle
On Tue, Aug 20, 2024 at 12:36 AM skejg via mc <
mc at lists.midnight-commander.org> wrote:
>
> Hi!
>
>
> How do you guys handle errors when launching user menu items, for
> example?
>
> Like, if you select a menu item, run it, it fails, prints something to
> /dev/sderr, then what do you do not to miss it? Always perform <C-o> to
> check the output? Notify yourself somehow? Something else?
>
> For now, I just try to construct menu items like this:
>
> git am -3 %d/%f \
> || notify-send -i dialog-error -a "ERROR" "The patch was aborted"
>
> But maybe there's a better way? More *MC-like* way? :)
>
>
> Thanks!
>
>
> --
> skejg
>
> --
> mc mailing list
> mc at lists.midnight-commander.org
> https://lists.midnight-commander.org/mailman/listinfo/mc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.midnight-commander.org/pipermail/mc/attachments/20240824/9ba51890/attachment-0001.html>
More information about the mc
mailing list