Another small suggestion: --show-maximized to show the whole window maximized when it's first launched. To be used in combination with -a of course :)
d3fault On 10/16/22, d3fault <d3faultdot...@gmail.com> wrote: > Thank you for this! I haven't tested it but I'll assume it works. > Since you're in "fim mode" maybe I can persuade you to re-add the "-1" > flag and also re-add Ctrl-C terminating the program with error code != > 0. I'm trying to port the following fbi script to fim. what it does is > recursively generates an image list from current directory, shuffles > it, then displays those images in fbi and exits out. the whole process > loops indefinitely (so a different shuffled order is shown every time) > until Ctrl+C is pressed. it doesn't use a slideshow by default but I > can pass "-t 5" to the script and then it does. side note: --slideshow > 5 takes a bit longer to write. -t alias? > > thank you for your work on fim. fbi is awesome but up until now I was > sad it didn't work with x11. > > > #!/bin/bash > while : > do > fbi -noverbose -a -u "$@" -1 --list <(find . -type f \( -iname > "*.jpg" -o -iname "*.bmp" -o -iname "*.png" -o -iname "*.gif" -o > -iname "*.jpeg" \)) || break > done > > On 10/10/22, Michele Martone <michelemart...@users.sourceforge.net> wrote: >> ...I realize the last email patch was not covering -o fbdev and -o aa. >> >> Now: >> svn diff http://svn.savannah.nongnu.org/svn/fbi-improved -r 1676:1678 >> should cover those, too. >> Tarballs updated. >> >> Feedback welcome, >> m. >> >> On 20221010@12:02, Michele Martone wrote: >>> Dear d3fault, >>> >>> Here is the upstream fix. >>> >>> In patch form: >>> svn diff http://svn.savannah.nongnu.org/svn/fbi-improved -r 1676:1677 >>> (also attached) >>> >>> In 0.6 trunk tarball: >>> >>> http://download.savannah.nongnu.org/releases/fbi-improved/fim-0.6-trunk.tar.gz >>> >>> http://download.savannah.nongnu.org/releases/fbi-improved/fim-0.6-trunk.tar.gz.sig >>> >>> Would be great if you could give it a try. >>> >>> Cheers, >>> Michele >>> >>> On 20221010@08:05, Michele Martone wrote: >>> > Dear d3fault, >>> > >>> > Thanks for reporting of this defect. >>> > >>> > Unfortunately it's also in the latest revision. >>> > I'll let you know here once I attack the problem. >>> > >>> > The good news in the last weeks I'm very active with fim, so >>> > *maybe* we get this solved soon-ish :-) >>> > >>> > ciao, >>> > Michele >>> > >>> > On 20221009@09:57, d3fault wrote: >>> > > Package: fim >>> > > Version: 0.5.3-9+b1 >>> > > Severity: normal >>> > > X-Debbugs-Cc: d3faultdot...@gmail.com >>> > > >>> > > Dear Maintainer, >>> > > >>> > > * What led up to the situation? >>> > > fim --slideshow=5 ./*.jpg >>> > > * What exactly did you do (or not do) that was effective (or >>> > > ineffective)? >>> > > I looked at the screen. I also pressed 'q'. >>> > > * What was the outcome of this action? >>> > > The first image of the slideshow was just all black. The 2nd+ >>> > > images do show. >>> > > Also if you press 'q' while the slideshow is still running, >>> > > the >>> > > app doesn't quit >>> > > but instead it just progresses to the next image. After all >>> > > the >>> > > images have been >>> > > shown, then 'q' will quit. I would also expect slideshow mode >>> > > to >>> > > loop around >>> > > indefinitely, but that's not really a bug. >>> > > * What outcome did you expect instead? >>> > > I expected to see the first image. I also expected 'q' to quit >>> > > the app. >>> > > >>> > > Also confirmed the bug exists on Bullseye. >>> > > It works fine in fbi. >>> > > >>> > > >>> > > -- System Information: >>> > > Debian Release: bookworm/sid >>> > > APT prefers unstable >>> > > APT policy: (500, 'unstable') >>> > > Architecture: amd64 (x86_64) >>> > > >>> > > Kernel: Linux 5.10.0-18-amd64 (SMP w/4 CPU threads) >>> > > Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), >>> > > LANGUAGE not set >>> > > Shell: /bin/sh linked to /usr/bin/dash >>> > > Init: systemd (via /run/systemd/system) >>> > > >>> > > Versions of packages fim depends on: >>> > > ii libaa1 1.4p5-50 >>> > > ii libc6 2.35-3 >>> > > ii libdjvulibre21 3.5.28-2 >>> > > ii libexif12 0.6.24-1+b1 >>> > > ii libgcc-s1 12.2.0-5 >>> > > ii libgif7 5.2.1-2.5 >>> > > ii libjpeg62-turbo 1:2.1.2-1+b1 >>> > > ii libpng16-16 1.6.38-2 >>> > > ii libreadline8 8.2-1 >>> > > ii libsdl1.2debian 1.2.15+dfsg2-8 >>> > > ii libstdc++6 12.2.0-5 >>> > > ii libtiff5 4.4.0-4 >>> > > >>> > > fim recommends no packages. >>> > > >>> > > fim suggests no packages. >>> > > >>> > > -- no debconf information >>> >>> >> >>> Index: trunk/src/CommandConsole.h >>> =================================================================== >>> --- trunk/src/CommandConsole.h (revision 1676) >>> +++ trunk/src/CommandConsole.h (revision 1677) >>> @@ -410,6 +410,7 @@ >>> public: >>> void switch_if_needed(void); >>> fim::string getInfoCustom(const fim_char_t * ifsp)const; >>> + fim_int show_must_go_on(void) const; >>> }; >>> } >>> >>> Index: trunk/src/CommandConsole.cpp >>> =================================================================== >>> --- trunk/src/CommandConsole.cpp (revision 1676) >>> +++ trunk/src/CommandConsole.cpp (revision 1677) >>> @@ -645,7 +645,7 @@ >>> else >>> #endif /* FIM_ITERATED_COMMANDS */ >>> >>> status=execute_internal(getBoundAction(c).c_str(),FIM_X_NULL); >>> - if( show_must_go_on_ ) >>> + if( show_must_go_on_ > 0 ) >>> >>> FIM_AUTOCMD_EXEC_POST(FIM_ACM_POSTINTERACTIVECOMMAND); >>> } >>> >>> @@ -901,10 +901,14 @@ >>> * Allows user to press any key during loop. >>> * Loop will continue its execution, unless pressed key is >>> exitBinding_. >>> * If not, and if the key is bound to some action, this >>> action is >>> executed. >>> - * returns 1 if loop has to be broken. >>> + * If loop has to be broken, returns 1 and changes >>> show_must_go_on_ >>> to >>> 2. >>> */ >>> fim_key_t c; >>> >>> + if ( !show_must_go_on_ ) >>> + goto err; >>> + show_must_go_on_ = 1; >>> + >>> if ( exitBinding_ == 0 ) >>> goto err; /* any key triggers an exit */ >>> >>> @@ -931,7 +935,8 @@ >>> } >>> return 0; /* no chars read */ >>> err: >>> - return 1; /* loop shall be broken */ >>> + show_must_go_on_ = 2; >>> + return 1; /* break any enclosing loop */ >>> } >>> >>> #ifdef FIM_USE_GPM >>> @@ -1174,6 +1179,7 @@ >>> #if FIM_WANT_BACKGROUND_LOAD >>> blt_.join(); >>> #endif /* FIM_WANT_BACKGROUND_LOAD */ >>> + show_must_go_on_ = -1; /* without this it would break loops in >>> postExecutionCommand_ aka -F */ >>> FIM_AUTOCMD_EXEC(FIM_ACM_POSTEXECUTIONCYCLE,initial); >>> return quit(return_code_); >>> } >>> @@ -2675,4 +2681,9 @@ >>> labeldone: >>> return linebuffer; >>> } >>> + >>> +fim_int CommandConsole::show_must_go_on(void) const >>> +{ >>> + return show_must_go_on_; >>> +} >>> } /* namespace fim */ >>> Index: trunk/src/fim.h >>> =================================================================== >>> --- trunk/src/fim.h (revision 1676) >>> +++ trunk/src/fim.h (revision 1677) >>> @@ -1082,7 +1082,7 @@ >>> #define FIM_FLT_HELP_DISPLAY FIM_FLT_DISPLAY " ['reinit' >>> {string}]|'resize' {w} {h}]: display the current file contents." >>> FIM_CNS_CMDSEP "If 'reinit' switch is supplied, the '{string}' specifier >>> will be used to reinitialize (e.g.: change resolution, window system >>> options) the display device." FIM_CNS_CMDSEP "See documentation for the >>> --" FIM_OSW_OUTPUT_DEVICE " command line switch for allowed values of >>> {string}." FIM_CNS_CMDSEP "If 'resize' and no argument, will ask the >>> window manager to size the window like the image." FIM_CNS_CMDSEP "If >>> 'resize' and two arguments, these will be used as width and height of >>> window, to set." >>> >>> /* */ >>> -#define FIM_CNS_SLIDESHOW_CMD "while(" FIM_VID_FILEINDEX "<" >>> FIM_VID_FILELISTLEN "){sleep " FIM_VID_WANT_SLEEPS "; next;}" >>> +#define FIM_CNS_SLIDESHOW_CMD FIM_FLT_RELOAD "; i:fresh=1; while(" >>> FIM_VID_FILEINDEX "<" FIM_VID_FILELISTLEN "){sleep " FIM_VID_WANT_SLEEPS >>> "; next;}" >>> #define FIM_CNS_QUIET_CMD FIM_VID_DISPLAY_STATUS "=0;" >>> FIM_VID_DISPLAY_BUSY "=0;" >>> >>> /* >>> Index: trunk/src/testdir/test13.in >>> =================================================================== >>> --- trunk/src/testdir/test13.in (revision 1676) >>> +++ trunk/src/testdir/test13.in (revision 1677) >>> @@ -1,6 +1,6 @@ >>> # file browsing test >>> # in order for this test to terminate, we need some files .. >>> -if(_filelistlen>1){stdout "at least one file in the list.";quit 1;} >>> +if(_filelistlen>1){stdout "at least one file in the list.";} >>> if(_filelistlen<1){stdout "probable problems with file browser.";quit >>> 1;} >>> while(_filelistlen>1){list "pop";} >>> stdout _filelistlen; >>> Index: trunk/src/fim.cpp >>> =================================================================== >>> --- trunk/src/fim.cpp (revision 1676) >>> +++ trunk/src/fim.cpp (revision 1677) >>> @@ -263,7 +263,11 @@ >>> }, >>> {"slideshow", required_argument, FIM_NULL, 0x7373, >>> "interruptible slideshow mode", FIM_CNS_EX_NUM_STRING, >>> - "Interruptible slideshow mode; will wait for " FIM_CNS_EX_NUM_STRING " >>> of seconds (assigned to the " FIM_VID_WANT_SLEEPS " variable after each >>> loading; implemented by executing " FIM_CNS_SLIDESHOW_CMD " as a first >>> command." >>> + "Interruptible slideshow mode. " >>> + "Wait for " FIM_CNS_EX_NUM_STRING " of seconds (assigned to the " >>> FIM_VID_WANT_SLEEPS " variable) after each image. " >>> + "Implemented by executing " FIM_CNS_SLIDESHOW_CMD " as a first >>> command. >>> " >>> + "Can be interrupted by " FIM_KBD_COLON " or " FIM_KBD_ESC ". " >>> + "The other keys will execute accordingly to their function but will >>> not >>> interrupt the slideshow." >>> }, >>> {"sanity-check", no_argument, FIM_NULL, 0x70617363, >>> "only perform a sanity check", FIM_NULL, /* Was -S until r1001 */ >>> Index: trunk/src/fim_interpreter.cpp >>> =================================================================== >>> --- trunk/src/fim_interpreter.cpp (revision 1676) >>> +++ trunk/src/fim_interpreter.cpp (revision 1677) >>> @@ -67,7 +67,7 @@ >>> #define FIM_EC(CMD,ARGS) /* fim::cc.execute(CMD,ARGS) */ "result" >>> /*Var((fim_int)1)*/ /* FIXME: shall return Arg or Var or Val */ >>> typedef nodeType * NodeType; >>> #else /* FIM_INDEPENDENT_NAMESPACE */ >>> -#define FIM_NO_BREAK fim::cc.catchLoopBreakingCommand(0)==0 >>> +#define FIM_NO_BREAK ( abs(fim::cc.show_must_go_on()) == 1 && ( >>> fim::cc.catchLoopBreakingCommand(0)==0) ) >>> #define FIM_OPRND(P,N) ((P)->opr.op[(N)]) >>> #define FIM_FACC(O) (O)->fid.f >>> #define FIM_SACC(O) (O)->scon.s >>> Index: trunk/doc/fim.man.in >>> =================================================================== >>> --- trunk/doc/fim.man.in (revision 1676) >>> +++ trunk/doc/fim.man.in (revision 1677) >>> @@ -207,7 +207,7 @@ >>> Set scroll steps for internal variable _steps (default is 20%). >>> .TP >>> .B --slideshow {number} >>> -Interruptible slideshow mode; will wait for {number} of seconds >>> (assigned >>> to the _want_sleep_seconds variable after each loading; implemented by >>> executing while(_fileindex<_filelistlen){sleep _want_sleep_seconds; >>> next;} >>> as a first command. >>> +Interruptible slideshow mode. Wait for {number} of seconds (assigned to >>> the _want_sleep_seconds variable) after each image. Implemented by >>> executing reload; i:fresh=1; while(_fileindex<_filelistlen){sleep >>> _want_sleep_seconds; next;} as a first command. Can be interrupted by : >>> or >>> Esc. The other keys will execute accordingly to their function but will >>> not interrupt the slideshow. >>> .TP >>> .B --sanity-check >>> Perform a quick sanity check, just after the initialization, and >>> terminate. >>> Index: trunk/NEWS >>> =================================================================== >>> --- trunk/NEWS (revision 1676) >>> +++ trunk/NEWS (revision 1677) >>> @@ -3,6 +3,8 @@ >>> >>> Version 0.6-trunk >>> >>> +# (r1677) >>> + * Slideshow function (e.g `fim --slideshow=5 *.jpg`) now more >>> responsive. >>> # (r1662) >>> * Arrow keys are now working in aalib (-o aa). >>> # (r1649) >> >> >> >> >