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)
>>
>>
>>
>>
>

Reply via email to