Sxiv: [запрос Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ] Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС изобраТСния Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 12 ΠΎΠΊΡ‚. 2014  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: muennich/sxiv

Если я Ρ‰Π΅Π»ΠΊΠ½Ρƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² диспСтчСрС Ρ„Π°ΠΉΠ»ΠΎΠ², откроСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ. МнС Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ всСх ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ изобраТСния.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

МоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этого:
https://github.com/Parveshdhull/misc/tree/master/linux

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ