Commit 391a9bfd authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

--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
parent 55c27c4b
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -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-\&" \&.
.
+13 −0
Original line number Diff line number Diff line
@@ -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);