diff options
author | Daniel Friesel <derf@finalrewind.org> | 2018-11-19 18:34:31 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2018-11-19 18:34:31 +0100 |
commit | 391a9bfd489d3f2e0cc74a2f698938b3e621d25b (patch) | |
tree | d1a19ae9998cf4a5312fa0ded0cd5c89a9f6fa33 | |
parent | 55c27c4babcf63989192f930ba7a75dac691e1e5 (diff) |
--start-at: Auto-load directory when no other files are specified
This changes the behaviour of "feh --start-at FILENAME" as follows:
Previously, this would cause feh to load all files in the current
working directory, since no files or filelists were specified on the command
line.
Now this is a special case: feh will extract the directory component from
FILENAME, load all files in that directory, and display FILENAME.
This way, it's possible to use "feh --start-at ~%f" in XDG Desktop files
and browse files in feh using the prev/next keys
Closes #372
Closes #420
-rw-r--r-- | man/feh.pre | 28 | ||||
-rw-r--r-- | src/options.c | 13 |
2 files changed, 34 insertions, 7 deletions
diff --git a/man/feh.pre b/man/feh.pre index e401ab5..d5d7cbf 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -45,7 +45,9 @@ and image captions. .Nm can be controlled by configurable keyboard and mouse shortcuts, terminal input and signals. -When no file arguments or filelists are specified, +When no file arguments or filelists are specified and +.Cm --start-at +is not used, .Nm displays all files in the current directory. . @@ -728,8 +730,20 @@ to sort numbers naturally, so that e.g. 10.jpg comes after 2.jpg. . Start the filelist at .Ar filename . +If no files or filelists were specifed on the commandline, +.Nm +will first load all files from the directory in which +.Ar filename +resides. +This way, it's possible to look at a specific image and use the next / prev +keys to browse through the directory. +See +.Sx USAGE EXAMPLES +for examples. +. +.Pp . -If you use relative paths in your filelist, +Note: If you use relative paths in your filelist, .Ar filename should also be a relative path. If you use absolute paths, it should also be an absolute path. @@ -738,7 +752,7 @@ If .Nm cannot find an exact match, it will compare basenames .Pq filenames without the directory suffix . -Note that this may lead to mismatches if several files in your filelist +This may lead to mismatches if several files in your filelist have the same basename. . .It Cm -T , --theme Ar theme @@ -1915,14 +1929,14 @@ automatically change to the next image after 5 seconds View all images in ~/Pictures and below, sorted by width, move an image to ~/image/image_name when enter is pressed . -.It feh --start-at ./foo.jpg \&. +.It feh --start-at ~/Pictures/foo.jpg . -View all images in the current directory, starting with foo.jpg. +View all images in ~/Pictures, starting with foo.jpg. All other images are still in the slideshow and can be viewed normally . -.It feh --start-at foo.jpg * +.It feh --start-at ~/Pictures/foo.jpg ~/Pictures . -Same as above +Same as above. . .It feh --info \&"exifgrep '\&(Model\&|DateTimeOriginal\&|FNumber\&|ISO\&|Flash\&)' %F \&| cut -d \&. -f 4-\&" \&. . diff --git a/src/options.c b/src/options.c index 894e29f..333c8c7 100644 --- a/src/options.c +++ b/src/options.c @@ -812,6 +812,19 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) add_file_to_filelist_recursively(argv[optind++], FILELIST_FIRST); } } + else if (finalrun && !opt.filelistfile && !opt.bgmode) { + if (opt.start_list_at && !path_is_url(opt.start_list_at) && strrchr(opt.start_list_at, '/')) { + char *target_directory = estrdup(opt.start_list_at); + char *filename_start = strrchr(target_directory, '/'); + if (filename_start) { + *filename_start = '\0'; + } + add_file_to_filelist_recursively(target_directory, FILELIST_FIRST); + free(target_directory); + } else { + add_file_to_filelist_recursively(".", FILELIST_FIRST); + } + } else if (finalrun && !opt.filelistfile && !opt.bgmode) add_file_to_filelist_recursively(".", FILELIST_FIRST); |