正在运行的 shell 脚本的进度条窗口/通知区域中的进度条

正在运行的 shell 脚本的进度条窗口/通知区域中的进度条

我为我的 dolphin 上下文菜单实现了一些 shell 脚本。在 shell 脚本中,我运行了一些命令,这需要一些时间。

我的问题是:是否可以在(a)shell 脚本中实现一些代码,以便弹出窗口或通知字段(kde plasma)中的状态栏显示出来?

这是我想要使用进度条的脚本:

#!/bin/bash

mkdir small
cp *.jpg small
cp *.JPG small
cd small

for i in *.jpg; do
 if [ -e "$i" ]; then
   file=`basename "$i" .jpg`
   mogrify -unsharp 0.25x0.25+8+0.065 -resize 1280x1024 -normalize -density 180 -monitor "$i"
 fi
done

for i in *.JPG; do
 if [ -e "$i" ]; then
   file=`basename "$i" .JPG`
   mogrify -unsharp 0.25x0.25+8+0.065 -resize 1280x1024 -normalize -density 180 -monitor "$i"
 fi
done

说明:该脚本非常方便将图片(jpeg)后期处理为适合图片协议(ppt,pdf等)的合理大小或其他...

答案1

对我的问题的回答是可行的,但不是最漂亮的;)它缺少百分比的连续进度条。

添加到脚本:

 (#your commands) | zenity --progress --auto-close --title="Post-Process Pictures" --text="Rendering pictures..." --pulsate

这将打开一个带有脉动条的窗口。只要命令仍然有效,该窗口就会打开。

完整脚本现在如下所示:

#!/bin/bash

(mkdir small
cp *.jpg small
cp *.JPG small
cd small

for i in *.jpg; do
 if [ -e "$i" ]; then
   file=`basename "$i" .jpg`
   mogrify -unsharp 0.25x0.25+8+0.065 -resize 1280x1024 -normalize -density 180 -monitor "$i"
 fi
done

for i in *.JPG; do
 if [ -e "$i" ]; then
   file=`basename "$i" .JPG`
   mogrify -unsharp 0.25x0.25+8+0.065 -resize 1280x1024 -normalize -density 180 -monitor "$i"
 fi
done) | zenity --progress --auto-close --title="Post-Process Pictures" --text="Rendering pictures..." --pulsate

最好的,本杰明。

脉动进度条

此外:我将脚本与 .desktop 文件结合使用,这样我就可以通过 dolphin 中的左键单击上下文菜单使用它。只需在 /usr/share/kservices5/ServiceMenus 中创建一个包含以下内容的 resize.desktop 文件:

[Desktop Entry]
Actions=resize_pictures
Icon=transform-crop-resize
MimeType=image/jpeg;
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel

[Desktop Action resize_pictures]
Exec=sh pathtoyourscript/resize_pictures
Icon=transform-scale
Name=Resize Image(s)

相关内容