Re: [e-users] Happy New year E crowd

gary <[email protected]>
Newsgroups gmane.comp.window-managers.enlightenment.user
Message-ID <[email protected]>
efm is a wonderful project. I, for one, am excited to here that these 
improvements are on the way. efm is my daily file manager and the more 
it can do the more I can do with it. I like to see it as the corner 
stone of enlightenment. Thank you for your continuing efforts to make 
enlightenment better.

Happy new year.

On 2023-01-02 03:11, Carsten Haitzler wrote:
> So ... Happy new year and what not.
> 
> As a new years resolution... I've decided to be a bit more 
> communicative. I'm
> going to start with this email.
> 
> So things have been a bit quiet lately. I've been busy with buying a 
> house
> (oddly it's my first house I've ever bought) in London. Like most 
> places that
> are not astronomically prices, it needs work. I've been having it get 
> renovated
> and oddly this actually has proven to be an extra full-time job in 
> addition to
> my full time work at Arm, so time for E is preciously small. Bonuses 
> are that
> the work is coming towards the latter end (well it was originally meant 
> to be a
> 10 week project. 24 weeks later and it's still going...). I've been 
> living
> without a proper bathroom and no kitchen now for several months 
> (relying on a
> small shower room) and battling dust and dirt, freezing cold coming 
> through
> open doorways (with no doors), a central heating system that is broken 
> (it
> seems some people have zero clue how to install and commission these). 
> Oddly I
> have gigabit internet with cat6a wired up through the house... no 
> kitchen but
> gigabit networking. I guess I'm officially a nerd. Once things settle 
> I'll have
> more time, but there is so much to do still even when builder do 
> finally leave
> one day...
> 
> Now that aside let's get on with E stuff.
> 
> I've been working away at a rewrite of efm. Why? The old efm code is... 
> old. It
> has some nasty dark corners that mean e gets i/o stalls and especially 
> in some
> cases when on possibly slow storage like some slow usb drive or network 
> mount.
> I've really needed to TOTALLY isolate the i/o from the front end. Bonus 
> - doing
> this means I can fake the back-end fs. Let's not waste your curiosity 
> and give
> you a link to the work so far (not in git yet):
> 
> http://www.rasterman.com/files/efm2.tar.gz
> 
> To unpack + build:
> 
>   tar zxvf efm2.tar.gz
>   cd efm2
>   meson . build
>   ninja -C build
>   sudo ninja -C build install
>   efm ./testdir
> 
> (note - pass any dir as the argument on the cmdline or no dir == list 
> current
> dir).
> 
> It's a TEST tool. It is not a final, look and feel. Actually the window 
> is more
> about testing things like focus movement - the buttons surrounding the
> scrollable view are all for testing. It's all about creating enough 
> code to
> test and build the actual efm internals for the view and make the 
> back-end
> file i/o function. You will need a git checkout of efl for new theme 
> elements
> BTW.
> 
> So ... what is this? Roughly... A file manager view that currently does 
> regular
> row by row icon view (with fixed icon sizes), simple list view (icon + 
> name),
> detailed list view (lots of columns with resizable drag bars, and an
> interesting size view with a colored and sized bar for relative file 
> size, full
> permission display, mime type etc.) ... currently custom view is 
> unimplemented
> (this is for icons you can manually place anywhere - i.e. like on the 
> desktop).
> I was hoping to also add the ability to have custom icon sizes per file 
> there
> too when I get to that. It does drag and drop (it won't DO anything 
> like
> move/copy files but it'll tell you on stdout what it should be doing), 
> copy &
> paste, single and multiple selections, monitor the directory for 
> changes and
> update accordingly. In theory it has various sorting modes but only 
> exp;oses
> access to one right now. Focus should work (tab/arrow keys). It should 
> handle
> massive dirs (1000's of files). The front end and back end should be 
> totally
> divorced and thus you can point it at some insanely slow sshfs mount to 
> the
> other side of the planet over a 2400 baud modem and the gui should 
> remain
> fluid... it just may update slowly (exception right now - .desktop 
> files
> that refer to local content within that slow fs - to be addressed)... 
> :). It
> will generate thumbnails and update them. The backend fs is a separate 
> process
> the front end talks to via stdin/out - as is the thumbnailer too that 
> the
> back-end uses. Why do this? You could implement a new fs as a python or 
> shell
> script. The idea is that you can write new fs backends that maybe wrap 
> the
> default one that do extra setup stuff at the start like mount a 
> specific fs,
> ask for user and password things etc. at this point (the front end will
> eventually provide commands via stdin/out to present these ui things). 
> It will
> see .desktop files and handle them specially using the label from the 
> .desktop
> and the icon the .desktop says to use (I know - potential security 
> problem
> here ... undecided how to handle this yet). It will handle som 
> extensions I
> made to .desktop files to have different images/icons when clicked and 
> selected
> (testdir has an example). It handles dirs with custom icons (example in
> testdir). If desktop filers use animated icons (gifs, webp etc.) they 
> will also
> play.
> 
> It will not actually run anything. It won't actually copy, move, delete 
> etc.
> anything. I've started filling in keyboard handling and enough hooks to 
> glue
> this together so it'll print what it sees event wise or action-wise on 
> stdout.
> 
> The backends are installed in PREFIX/lib/efm/backends - there is only 
> one right
> now (default) and it has 2 binaries. open and thumb. open opens a 
> target dir
> and monitors it for changes - listing the contents and sending updates. 
> thumb
> does what you think - it will generate a thumbnail. Thumbnails are 
> always
> installed in ~/ assuming ~/ is fast and thus any i/o to access 
> thumbnails there
> is "instant" (It's still done async in threads though...).
> 
> Have a look at sample-open-stdio.txt in the base source to get an idea 
> of the
> text output from the open back-end that gets sent to the front-end as 
> well as
> the commands sent to the back-end (it sends a set-dir to set which dir 
> to
> list/monitor). As this is 2-way communication it can be made to do just 
> about
> anything.
> 
> What I currently have not decided is how "actions" will work. Should 
> they be
> CMD's sent back to the open back-end to then implement - I think it 
> should be.
> This back-end I plan to then just run a local cp/mv/rm binary in the 
> backend
> and pass on updates via stdout (and allow cancelling). This will allow 
> the open
> binary to basically be the master of everything. open already handles 
> running
> the thumb tool to update/generate thumbnails when needed, so might as 
> well do
> the rest. So from efm's point of view it talks to this open tool (can 
> be a
> binary, perl, python, lua, bash or whatever script) and this open tool 
> does all
> the necessary i/o itself or via other tools.
> 
> So I'm filling in all the bits. Custom view will be needed soon. I also 
> haven't
> handled video files in icons (It won't play a video as an icon at this 
> point -
> but on my todo list - this will also double up to play audio files with 
> the
> same code at some point).
> 
> What I will need to do is expand the commands that the back-end can 
> send over.
> Things on my todo list are like:
> 
> * Display and update a progress bar (for various things but mostly 
> cp/mv/rm ops)
> * Handle a list/stack of these progress bars
> * Display an overlayed progress bar per icon
> * Display other overlayed info on icons (labels, overlay icons)
> * Set different states fo an icon (fade, pulse, zoom/grow, bounce, ...)
> * Select/unselect files
> * Display overlayed text on view (doesn't scroll) in a corner, edge or 
> center
> * Display overlayed icons/images like above
> * Display background images (don't scroll)
> * Display overlayed foreground images (don't scroll)
> * Display background images (scroll and size of file view not scroller)
> * Display overlay foreground images (scroll and size of file view not 
> scroller)
> * Scroll to a position or file
> * Display in-view popup with label, icons, entry (text and passwd) list 
> of
> text+icons and buttons and get events
> * Display bottom/top/left/right edge extra panels with 
> buttons/icons/etc.
> content and hear events from these
> * Hear events from front end like select/unselect, scroll, dnd, copy & 
> paste,
> keys, mouse events etc.
> * Graphs ... display 1 or more and allow overlay with updates and 
> interaction
> events (line graph, bar graph etc. etc. - a few canned types to make 
> themes
> sane)
> * Allow extension or replacement of right click menu on view background 
> or
> files
> * Allow typebuf like updates of what a user types so the back-end can
> parse/interpret what a user types and "Do smart things" like run like a
> pseudo-cmdline shell
> * Vertical highlight display along edges (e.g. for search highlights)
> 
> The above list should begin to give you some idea that the idea is 
> there is a
> bit of a pseudo high-level remote UI handled by the efm front end that 
> the
> back end can use and interact with. The idea at least is, over time as 
> this
> matures, to allow the fm back end to e.g. do a download manager like 
> display
> like maybe you find on steam with some graph that shows download speed 
> and disk
> speed as 2 overlayed graphs. For the back-end to display a copy or move
> operation in the view as little progress bars per icon that is being 
> copied or
> moved. Given a flexible enough front end that even allows more advanced 
> layout
> of items. Imagine commands that can create boxes or tables with various 
> labels,
> bars, graphs, buttons, lists etc. and then the back-end can even create
> relatively featureful UIs like if the back-end detects this is your 
> music
> collection... it can display a whole ,music player UI in a side-panel 
> and when
> you select a file it starts playing it allowing for controls to do 
> that.
> Imagine a directory of just photos and the view switches icon view 
> style to have
> the label overlay the icon and display the selected icon (photo) as the
> background (temporarily). The point is to allow for rich and powerful 
> file
> view backends that can avoid having to do a lot of graphics and design 
> work
> and just simply present what they want to show the user or ask of them 
> and have
> the front end deal with it in a nice way.
> 
> Eventually I'd like to see a backend "repository" where people can post 
> new
> backends available for download that users can grab and use thus adding 
> to
> their workflow and power. Share your created bash shell backend with 
> others by
> uploading it. Yes. I know. Security implications. How do you know this 
> backend
> is not just going to delete all your files... I'll have to come up with 
> some
> kind of rating, signing and blacklisting (removal) system. This kind of 
> thing
> has already been tried with screenshots in e to some reasonable 
> success. This
> will need to expand it to track the uploader by some unique key/hash so 
> only
> the uploader can upload updates to a backend and that uploader can be
> identified and banned if they do bad things. New backends that have not 
> had
> anyone look into them yet can be flagged as "in staging" with big 
> warning
> symbols until enough people (or the right people) give them a clean 
> bill of
> health. Will cross that bridge when we come to it.
> 
> I plan to re-use the whole stdin/out system in future for gadgets too 
> allowing
> much more easily hacked together gadgets and such in e. Imagine you 
> right click
> on a gadget and you get an "edit source" menu and up comes the bash 
> script for
> that gadget - you can edit and press "save" and it will change/update 
> on the
> fly. like with fm backends press "share" to share your creation... same
> problems with security, so will need the same solution for both, but 
> the point
> here is ease of use and separating out gui from back end.
> 
> Anyway - there is a new year update on what I have been doing and where 
> it is
> now, where it's going etc. and real code to back it up - not just hot 
> air.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.