Хочу представить простенький просмотрщик изображений на bash. Накропал его сам и может он не имеет практического применения,но все же. Конечно там возможно много сделать лучше и проще. Как говорится как есть))
#!/bin/bash
export tmp_num="/tmp/numbegin"
[ ! -f "$tmp_num" ] && echo "1" > "$tmp_num"
export file_image="/tmp/file_image"
[ ! -f "$file_image" ] && find / -xdev -type f -name "*.png" -or -name "*.svg" -or -name "*.jpg" > /tmp/file_image
export col_image=$(cat $file_image | wc -l)
export max_stroke=$(grep -c $ "$file_image" | (read a; echo $(( ($a/300)*300+1 ));))
export FILE_PATH=$(realpath "$0")
export catnum=$(cat "$tmp_num")
function IMAGE_FILE () {
begin="$1"
begin="$catnum"
IFS=$'\n'
i="$begin"
for file_name in $(sed -n "${begin},$((${begin} + 299))p" $file_image)
do
#size=$(exiv2 $file_name 2>/dev/null | awk ' NR==2 {printf("%.2f", sum ($4 / 1024)); print "Kb"}; NR==4 {print $4 "x" $6 "px"}' | tr '\n' ' ') --text=\"$size\"yad --undecorated --image=\"$file_name\" --text=\"$file_name\" --selectable-labels
if (( "$i % 30" == 0 )) && [[ "$i" -le $((${begin} + 299-30)) ]] ; then num="</hbox><hbox>"; else num=""; fi
echo "<button tooltip-text=\"$i $file_name\"><input file>\"$file_name\"</input><action>xdg-open \"$file_name\"</action><height>30</height><width>30</width></button> $num"
i=$((i + 1))
done
}
export -f IMAGE_FILE
export MAIN_DIALOG_IMAGE='<window window-position="1" title="Галерея bash"><vbox><hbox>'`IMAGE_FILE $begin`'</hbox><hbox space-expand="true" space-fill="true">
<button label="start">
<action>echo "1" > "$tmp_num"</action>
<action>$FILE_PATH $begin &</action></button>
<button label="'"$catnum"' prev">
<action>if [ "$catnum" -gt 1 ]; then begin=$(($catnum - 300)); echo "$begin" > "$tmp_num"; else begin=1; echo "1" > "$tmp_num"; fi</action>
<action>$FILE_PATH $begin &</action></button>
<button label="next '"$catnum"' - '"$(( $catnum + 299 ))=$col_image"'">
<action>if [[ "$catnum" -lt "$max_stroke" ]]; then begin=$(($catnum + 300)); echo "$begin" > "$tmp_num"; else begin=1; echo "1" > "$tmp_num"; fi</action>
<action>$FILE_PATH $begin &</action></button>
</hbox>
</vbox></window>'
gtkdialog --program=MAIN_DIALOG_IMAGE &
PID_SUM=$(ps | grep "MAIN_DIALOG_IMAGE" | grep -v grep | awk '{print $1}' | wc -l)
PID=$(ps -eo pid,cmd | grep "MAIN_DIALOG_IMAGE" | grep -v grep | awk '{print $1}' | head -1)
[ "$PID_SUM" -gt 1 ] && kill $PID
[ "$catnum" -ge "$max_stroke" ] && echo "1" > "$tmp_num" && $FILE_PATH $begin &
Хотел чтобы список был больше,но long arg list не дал это сделать. ps Не имею ни какого образования в программировании.