blob: b67e43d6d089273c52e49424bbd192c492cd7f27 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#!/bin/sh
# File: /usr/bin/irfanview64
# Author: bgstack15@gmail.com
# Startdate: 2016-01-29
# Title: Wrapper script for passing files to Irfanview
# Purpose: Converts file paths to a wine format and also handles compressed files
# History: 2016-01-29 Initial quick script written. It used a bunch of sed commands to transform paths to a wine format.
# 2019-02-26 remove /etc/default/irfanview file
# Usage: irfan /path/to/image /another/image/file
# Reference:
# Ideas for zip expansion and winepath https://github.com/Zykr/IrfanViewLinux/blob/master/irfanview
# Improve:
# load variables
test -z "${IV_WINEPREFIX}" && export IV_WINEPREFIX="$HOME/.wine64"
test -n "${IV_WINEPREFIX}" && export WINEPREFIX="${IV_WINEPREFIX}" || export WINEPREFIX=$HOME/.wine64
test -z "${IV_DEVTTY}" && export IV_DEVTTY=/dev/null
test -z "${IV_EXEC_NAME}" && export IV_EXEC_NAME="i_view64.exe"
test -z "${IV_EXEC_PATH}" && export IV_EXEC_PATH="/usr/share/irfanview64/i_view64.exe"
IV_VERSION="2019-02-26a"
# Define functions
expandword() {
# call: expandword "${word}"
# if file, add it
# if directory, expand it
# if tarball, extract it and operate on the directory like normal
local _word="$( echo "${@}" | sed -e 'sF\/\/F\/Fg;' )"
if test -d "${_word}";
then
# loop through all files in the directory
for _newword in "${_word}"/*;
do
expandword "${_newword}";
done
elif test -f "${_word}";
then
# file exists so check if tarball
case "${_word}" in
*.tgz|*.tar.gz)
# extract it and expand the temporary directory
_tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}"
echo "tmpdir ${_tmpdir}" 1>${IV_DEVTTY}
tar -zx -C "${_tmpdir}" -f "${_word}" 1>${IV_DEVTTY} 2>&1
expandword "${_tmpdir}"
;;
*.zip)
_tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}"
echo "tmpdir ${_tmpdir}" 1>${IV_DEVTTY}
echo "7za e -w${_tmpdir} ${_word}" 1>${IV_DEVTTY} 2>&1
( cd "${_tmpdir}"; 7za e "${_word}" 1>${IV_DEVTTY} 2>&1; )
expandword "${_tmpdir}"
;;
*)
# assume it is readable and add it to list of files to open
echo "File ${_word}" 1>${IV_DEVTTY}
thisfile="$( getwinepath "${_word}" )"
irfanfiles="${irfanfiles} \"${thisfile}\""
;;
esac
fi
}
getwinepath() {
# call: getwinepath "$foo"
winepath -w "${@}"
}
# Define variables
alltempdirs=""
# prepare files
irfanargs=
irfanfiles=
for word in "${@}";
do
expandword "${word}"
done
irfanfiles="${irfanfiles## }"
# run wine
cd $WINEPREFIX
echo "${irfanfiles}" | xargs echo wine "${IV_EXEC_PATH}" ${irfanargs} > ${IV_DEVTTY}
echo "${irfanfiles}" | xargs wine "${IV_EXEC_PATH}" ${irfanargs} &
#wait $( pgrep -P $$ ${IV_EXEC_NAME} )
# WORKHERE try wait with:
wait %1
for thistempdir in ${alltempdirs};
do
rm -rf "${thistempdir}" 1>${IV_DEVTTY}
done
|