Welcome everybody. So this is a talk which introduces the FIM image viewer and it's a pretty classical introduction talk with some new things about new features which I'm working on, which are not so very stable but half of the presentation is about that, so something which will work very soon. Good. So the classical introduction is of those happy times I was using the frame buffer a lot and I was using the FBI image viewer there and I was happy but I needed more and more use of the X-Windows system from time to time and foremost I wanted the VIM keys working in FBI because this was not there and this is very bad. So at some point I started wanting more things from FBI but FBI couldn't give it to me so not in this order but I started introducing things like new graphical front-ends, arbitrary key bindings, custom keywords or commands, shortcuts of course, in a completely different order of course but no, actually much more than this. Handling metadata of image files or searching of those metadata so incrementally adding things which one could do and also interaction with the standard inputs and standard outputs and shell scripts or scripting from the inside, so wherever. It was, you had to be a 360 degree nerdy image viewer for my purposes so it was just driven from my curiosity. So but still I maintained that this is meant to be and still is a unique tool so it's meant to show images so not to show movies, not to edit images so to do that with a possibly minimal user interface, yes this is right, for command line user interface enthusiasts, for people who like to have perhaps a few lines in the configuration file for some custom caption or perhaps some other customizable graphical feature and for perhaps people who want to use it with other utilities, all sorts. So what happened is that some kind of Kimera came out of the original FBI so I thought maybe I can call it FBI improved because of this. So with one executable you get pixel output, ASCII art output with or without colors, the second part of the talk will be also mentioning that a GTK front end, back end or front end sorry, front end is there so yeah. And what's the core of FIM? On what does FIM, on what is the basic FIM? FIM is based on a number of commands of a small language which perhaps I could spare myself if I only had taken some time to learn perhaps Gile or one of those languages so I evaluated I think the ninth rule of the Greenspan, I mean rules of Greenspan so that in every highly configurable program perhaps a LISP interpreter would have been done better so maybe that will come. Anyway, keys are always bound to commands. Commands are customizable, keys have names and you can bind them to commands. Commands live in a space of a simple language which is documented in the man page and there are also shortcuts so once you enter the command line mode with column of course you can have some shortcuts for things which are useful like go to the third picture of scale smaller by 10% or by some other precise amount. You have top auto completion of commands with a deliberate line. You don't need this always but sometimes you need it and it can be useful. I also forget the commands so therefore I have those features. I also like when I show pictures to my friends to have nice custom captions over the images and perhaps having those captions customizable in different parts of the screen and therefore there are four captions which you can customize with expando codes so this can expand to internal variables or to specified values like width, height and so on. You can make it look the way you really prefer. This is your right. I think this is important in an image viewer. I also like to use a bit metadata when I have collections of my travel pictures like to quickly show to somebody a concept from a place where I have been so then there is a simple text file format which can parse with simple commands there and perhaps some other features to make those commands perhaps more flexible. So to categorize groups of pictures or files actually and this allows quite functional forward and back search with the slash and of course the backspace key just like in VIM. What happens if you have a lot of pictures in a list in a collection? Is it also sometimes you just limit what you're showing for a time to some category, some values to some value key combination, key value combination. So for instance here you see that from five files that we have selected that we gave to the FIM we are showing just the four ones which respect this specification. So there are other limiting features like on size, on date and so on. Another recent functionality is that one that perhaps if you want to try out systematically some particular filter command that can be expressed as a UNIX command you can just start FIM that way with this particular command being specified as an argument to FIM and then systematically all of the pictures will be filtered that way before being shown to you. It can be useful if you don't want to convert all files just to having a preview but having the preview on the fly happening on temporary files. I find this also useful to me at least and the syntax is absolutely inspired by FIND the FIND minus exec feature and also just another important thing is that sometimes FIM doesn't really read all the formats you wish although it reads many of them but thanks to the help of external converters it can open many many other sorts of files also with the use of image magic as a last resort. So zip pad files, zip files and ISO files I know many of them and what's new in FIM because all of what I've shown so far it is the classical presentation with all the stuff but there's some nice stuff coming in a bit instable yet. It's about GTKB news because I'm getting old. I don't always remember of the internal commands of FIM. I wish people to find FIM more accessible, more usable perhaps and I never wished actually people to remember the commands. Why the hell? But still I wish to see myself and to allow others to quickly access to the functions which exist in FIM because I also forget them actually but yeah there are nice things. So yeah so this is the boring menu which you see now if you use minus OGTK and it's a normal menu right? So there is nothing really particular or funny here. There are not even like icons but still I cared, I wanted, I want that this menu should be, you should be able to specify this from the textual configuration file with like one line per item which seems sane to me. No XML files, nothing else. Just my custom and dangerous notation for that. And also that you should be able to customize the menus on runtime, why not? I think it is also very important. And this is actually to have like a reminder to what you can do with FIM when you need it. So the menus should be there just waiting for the moment. So back here. So those are the menus which I just had on my instance of my computer today. And let's explore the first one, the file menu. In the file menu you will find the classical open file and quit. And other things. And each one of those is like one line which is half-holded here but you can also have in your FIMRC file. So if tomorrow you want to have some specific variation of next or go to or jump to something, it's just one line in the configuration file so no recompilation, nothing is needed. Since commands are bound to keyboard keys, therefore there will be working automatic here so documentation hints to which key a specific command refers to. I mean if there is exists, for instance here, previous file in list, by the way it's b which is specified in a completely different line but this is kind of let's say detected or crossed. And this previous command actually is an alias which this alias is actually go to minus one and in the moment when the menu is being specified and in the specification of menu, it's only written that this is like slash file slash previous in list, space go to this and a few tabs so it's pretty light as a specification I would say and it should stay so. And only in that moment there is a correlation which looks that by the way, pref is go to minus one and why not to show this in the tooltips. So I find this useful. I find this to ease the path into using FIM. And you also have like perhaps things which might be useful like next in this directory. I didn't put it here but also open recursively directories. I didn't put it here because you don't do it this actually interactively you do this when you start FIM but it's there so you can put here the things you use more often or go to the next file from the last search for instance. Anyway so these are all things which I don't know if many other file image file viewers have but still this just reflect what already exists in FIM since a longer time. There's also like the categorization functionality which I introduced in the last time which I used for my vacation pictures. So once I used this very simple custom notation for categorizing files so listing the name of the file, a comment and a few like variables saying I don't know which artist a picture which artist made a particular picture then kind of also automatically such a menu can be computed during the rebuild of the menus and this can be useful to like select to short list remember the pictures of Bill and Richard before. To shorten the list to only to the files which pertain those particular keywords. Now also the usability of some functionality like interacting with internal variables should be easier perhaps with this GTK menus because yeah I said that you can specify the menus right but you can also specify not only menus which like run an action but also menus like toggle ones which let's say change between two values and this again fits like one line can be something custom for you if you want to have some particular let's say variable on which something else gets triggered because like in VIM you have like auto commands hooks so perhaps something can happen after you change a value yeah so the toggle is on two values so after there is a say some hook detects that the variable changes and the picture is for drone and it's also so that after yeah after such a thing happens yes you have also in case you have another menu which actually refers to the same variables there should be some consistency and to say the same state of the widget should be ensured so to avoid situations like the widget being an inconsistent states in different parts of the menu. Same story yeah now that there are so many variables in VIM that sometimes yeah there is a bit of confusion yeah for instance there is a variable that says yeah flip everything however as it comes and yeah so if you flip let's say the file but also flip all the files what ends up that it flips twice so you have to do special menus one for this image and one for whatever comes so this can be useful to me at least and perhaps to you as well and remember that this is just my choice of what I like so here there could be other defaults which you find better like your own values for the scaling or orientation yeah yeah moment yes so yeah let's go forward there is a window default menu which I specified and again you can specify your own you can take it away if you don't like it where I have put up with other things like since the the menu of VIM is actually it's using the font from from the linux kernel and it's just very ignorant I mean very simple pixels you can magnify the text or change the text font yeah by the menu here so just it refers to what the kernel uses and yeah and if you are to play let's say a bit more with the configuration of the gtk menus you can kind of rebuild the menus perhaps in a in more verbose ways so there are ways defaults at the moment I mean in the unstable version which you should not use yet which will be give more verbosity yes yeah so it's good that you have things which are experimental to you yourself like I don't know taking a selfie with with the camera and reading it in FIM at a given moment you you specified here in a so here we are calling the webcam alias the FIM alias code webcam which is reading from from the output of a command and it will show it here whatever output it is as long as FIM can read it the first few bytes will say which format it is and it will be shown same story as I have shown shown here there is another default here just to say something which means to read loud allowed the comments via speech synthesizer which I find also useful sometimes so you can have somebody not seeing the picture but actually giving you the sorry somebody not able to speak but telling you about the pictures you see so yeah there are also some special menus which are kind of not specified by you but just requested like the all action alias menu or the help menu which you just specify with one line but actually a lot of lines in the menu items in the menu gets in because this is like some kind of automatically generated recapitulation of what commands or aliases or key bindings or variable or variables exist so this is kind of a documentation intended feature so in the in the case of the help menu it's also a handy way to get to the to string telling you which are the options or particular usage modes of particular commands or aliases yeah so over the years I'm very grateful to for the help of the debut entertainers they always ensure a higher level of quality of what goes into code so they they help a finding problems so different maintainers in particular La Basia and so I'm helpful for whatever bug report hug or patch which comes once in a while and yeah that's that's that was this presentation and famous package so many Linux distributions and in case you wish to run it I don't know not only no but somewhere else perhaps I then can help you with it and we can do it I know that most of the people use film for for the Raspberry PI or for such systems I don't play with that it's okay if they do it I like to use it interactively and I invite you to do the same and yeah I welcome your feedback or your ideas of what's not yet there thank you time for questions first second is there just the just been used the upload anything to the gpa no what the question is whether there is a floating functionality of for doing what exactly for instance I don't know I just wanted to use so starting an image view from scratch if there was any no no no no no no if you but motivated now or in a different venue why it's useful important or whatever we can do it but at the moment no it's it's simple it's not a new project sorry is it a new project official from the new no it's not an official new project this is why it's called not new.org the website when it's post it looks very new it's I was confused maybe I maybe knew one day just for yeah perhaps yes I mean it's not going to itself because it uses so far now it's used to do a project and everything actually there are no projects there it is the reality yeah next question all right who used film so far maybe one side yeah one user who thinks we'll use film will you who really thinks we'll never use such a thing oh no yeah the honest good what's what's the typical use use case for using I use it often for showing what's the use typical use case of using film I don't track users I know that many people use it for like frames frame displays which is boring to me if it's useful to them good for them it means that they have like small computers like changing every each second picture super boring to me but they do it they're happy I'm happy but what I'm using for I use it for whatever I mean if I'm I create plots sometimes via pipe so I pipe it to film and film show me the picture I test filters graphical filters so I pipe picture I go show it to film I have my picture collection of vacation pictures I want to show how a good pizza looks like to a friend and I just look for pizza in my in my search in film and show you look this is how you can inspect visually a pizza and I don't have yet the pizza detector the plug-in for film which tells you the pizza is good just by showing it but you can easily integrate it with some OCR program if the OCR program is fine I mean or the pizza detector if you train the pizza detector fine it will show you a some kind of emotions are not yet supported but perhaps some other caption you can program to to be shown like good pizza or bad pizza and these are uses which I really support and invite you to to to have in film or I use it for aliases on on on my shell so sometimes I want to also show some kind of specific concept like somebody's being nasty to me so I start a special alias which shows something a gram picket for instance this may have communicating you're being nasty I don't know what other people do but whatever it's it's about showing a picture not manipulating it really so keeping the file not modifying the file I think belongs to film if you want to go dangerous you can compile film with the system I mean you can interact with the shell and you can you can do dangerous things with him it's many things are possible but I think the best way is to have a powerful possibly minimal because you don't have to implement all of this fun although compile in all of those functions so it should be a flexible image viewer that you can use with one over SSH over screen over T mooks over whatever I said I don't know and with different graphical outputs so I don't know other programs who do the same six is not there I'm really sorry many people use six nowadays I know that for some reason they like to encode to use more bytes than necessary for viewing pixels perhaps one day we'll have six cells six also here yeah thank you you