ΠΡΠ»ΠΈ Ρ ΡΠ΅Π»ΠΊΠ½Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ΅Π»ΠΊΠ½ΡΠ»ΠΈ. ΠΠ½Π΅ Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½Ρ ΠΏΠ°ΠΏΠΊΡ, ΡΡΠΎΠ±Ρ Ρ ΠΌΠΎΠ³ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
sxiv ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΉ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ. Google sxiv-rifle
ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
#!/bin/sh
if [ $# -ne 1 -o ! -f "$1" ]; then
echo "usage: ${0##*/} FILE" >&2
exit 1
fi
file -i "$(dirname "$1")"/* \
| awk -F ': *' -v f="$1" '
$2 ~ "^image" {
files[cnt++] = $1;
if ($1 == f)
n = cnt;
}
END {
for (i = 0; i < cnt; i++)
print files[i] | "sxiv -i -n " n;
}'
ΠΡΠ»ΠΎ Π±Ρ Ρ
ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠΏΡΠΈΡ -n
ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Β«ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°Β» Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Β«ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅ΡΒ», ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ. Π‘ ΡΡΠΈΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ sxiv -n x.png *.png
diff --git a/options.c b/options.c
index de02407..b9ca468 100644
--- a/options.c
+++ b/options.c
@@ -45,6 +45,7 @@ void parse_options(int argc, char **argv)
int n, opt;
char *end, *s;
const char *scalemodes = "dfwh";
+ char *opt_n = NULL; /* -n (starting picture number) can be index or filename */
progname = strrchr(argv[0], '/');
progname = progname ? progname + 1 : argv[0];
@@ -117,10 +118,7 @@ void parse_options(int argc, char **argv)
_options.from_stdin = true;
break;
case 'n':
- n = strtol(optarg, &end, 0);
- if (*end != '\0' || n <= 0)
- error(EXIT_FAILURE, 0, "Invalid argument for option -n: %s", optarg);
- _options.startnum = n - 1;
+ opt_n = optarg;
break;
case 'N':
_options.res_name = optarg;
@@ -172,6 +170,21 @@ void parse_options(int argc, char **argv)
_options.filenames = argv + optind;
_options.filecnt = argc - optind;
+ if (opt_n != NULL) {
+ for (n = 0; n < _options.filecnt; n++) {
+ if (strcmp(_options.filenames[n], opt_n) == 0)
+ break;
+ }
+ if (n < _options.filecnt) {
+ _options.startnum = n;
+ } else {
+ n = strtol(opt_n, &end, 0);
+ if (*end != '\0' || n <= 0)
+ error(EXIT_FAILURE, 0, "Invalid argument for option -n: %s", optarg);
+ _options.startnum = n - 1;
+ }
+ }
+
if (_options.filecnt == 1 && STREQ(_options.filenames[0], "-")) {
_options.filenames++;
_options.filecnt--;
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬: ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΡΠΆΠ΅ Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ (https://github.com/muennich/sxiv/pull/371).
ΠΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ:
https://github.com/Parveshdhull/misc/tree/master/linux
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ:
https://github.com/Parveshdhull/misc/tree/master/linux