This is great - only signed up recently so thanks for the update :)  Happy new year!

Any chance of implementing the workspace dragbar from e16 in the latest Enlightenment?


I used to be a kitchen designer for MFI years ago; their trade outlet Howdens is still around and worth a look.  It was always a good place to get the same quality kitchens at a better price with additional bits and bobs you can't get separately from mainstream stores - I used to use it to sort out issues with customer's kitchens.  You were /supposed/ to be a tradesman to buy there, but they usually have business cards on the counter for local tradesmen and they'll usually deal with you direct anyway ;)


Best of luck with your house renovations and all the best.

On 02/01/2023 11: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.

--



Φ SNAKΣ ΣYΣZ Φ

_______________________________________________
enlightenment-users mailing list
enlightenment-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-users

Reply via email to