Sxiv: [demande de fonctionnalité] Chargez toutes les images dans le même dossier

Créé le 12 oct. 2014  ·  3Commentaires  ·  Source: muennich/sxiv

Si je clique sur une image dans le gestionnaire de fichiers, seule l'image cliquée s'ouvre. J'aimerais vraiment voir la fonctionnalité pour charger toutes les images dans le même dossier afin que je puisse parcourir les images.

Commentaire le plus utile

Ma solution de contournement pour cela:
https://github.com/Parveshdhull/misc/tree/master/linux

Tous les 3 commentaires

sxiv est conçu pour les utilisateurs de ligne de commande. Veuillez utiliser un script wrapper pour cela. Google sxiv-rifle ou utilisez le suivant :

#!/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;
        }'

Ce serait bien si l'option -n peut également prendre "nom de fichier" au lieu de simplement "numéro d'index", comme ouvrir un gestionnaire de fichiers avec un fichier spécifique sélectionné. Avec cela, vous pouvez utiliser quelque chose comme 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--;

EDIT : Je viens de remarquer qu'il y a déjà une pull request (https://github.com/muennich/sxiv/pull/371).

Ma solution de contournement pour cela:
https://github.com/Parveshdhull/misc/tree/master/linux

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

rpdelaney picture rpdelaney  ·  9Commentaires

se7en-x230 picture se7en-x230  ·  5Commentaires

crocket picture crocket  ·  6Commentaires

MimaHakurei picture MimaHakurei  ·  3Commentaires

wavexx picture wavexx  ·  8Commentaires