Rewrite of EFM for E - out of E tree for now until it's ready to drop into E and be integrated
Go to file
Carsten Haitzler ce0776c5fb add an efm task watcher with super basic ui
thuis starts a task/op/status watcher with a gui that can show tasks
with progress and some status. status is properly written out.
scanning and progress is properly calculated. it's beginning to really
work and be controllable.
2024-05-29 22:09:44 +01:00
data add screenshots to readne 2023-06-23 09:21:53 +01:00
src add an efm task watcher with super basic ui 2024-05-29 22:09:44 +01:00
.clang-format try using clang format to make auto-formatting work well 2023-09-27 11:20:03 +01:00
.gitignore add gitignoe 2023-06-23 09:03:37 +01:00
COPYING Import src 2023-06-23 09:02:36 +01:00 add git master requirements 2023-06-23 09:27:45 +01:00 add xattr to todo 2024-05-23 12:25:00 +01:00 detect nsec struct stat systems 2023-08-27 14:48:40 +01:00
sample-open-stdio.txt Import src 2023-06-23 09:02:36 +01:00


Remake of Enlightenment's file manager

This re-does EFM so it can be used in and out-of-process too in E. This moves the FS layer entirely to a child process that EFM talks to over stdio. The only direct file access is via local "cached" files in $HOME that are intended to always be fast access (the location could move somewhere - but this is the only sane way - have to depend on some fast data store).

Screenshot Screenshot Screenshot

Things that need doing:



Must (EFL from git - must be latest master at any time):

Compiling and Installing

Meson is the build system used for this project. For more information please see

You will need normal build tooling installed such as a compiler (gcc or clang for example), pkg-config, ninja, any relevant package-dev or package-devel packages if your distribution splits out development headers (e.g. libc6-dev) etc.

Depending on where dependencies (like efl) are installed, you might have to set your PKG_CONFIG_PATH environment variable like:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

Also note that some distributions like to add extra arch directories to your library locations so you might have to have more like:


You will need to ensure that the destination library directory (e.g. /usr/local/lib is in your /etc/ or /etc/ files and after installing anything that installs libraries you re-run ldconfig. Please see relevant documentation on ldconfig and for your distribution.

You might also want to add the destination bin dir to your environment variable PATH (see documentation on your shell PATH variable) such as:

export PATH=/usr/local/bin:/usr/bin:/bin

Normal compilation in /usr/local:

meson . build
ninja -C build
sudo ninja -C build install

For meson build generic options:

meson --help

For a list of project specific options supported:

cat meson_options.txt

To set 1 or more project specific options:

meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build

To display current configuration:

meson configure build

The above will only work after at least the following is done:

meson . build

Quick build help

How to clean out the build and config and start fresh:

rm -rf build

How to make a dist tarball and check its build: (must do it from git tree clone and commit all changes to git first)

ninja -C build dist

How to change prefix:

meson --prefix=/path/to/prefix . build

How to install in a specific destination directory for packaging:

DESTDIR=/path/to/destdir ninja -C build install

How to build with verbose output (full commands run):

ninja -C build -v

To run this (for testing) either just run it and it will list/open the current working directory:


Or you can pass in a path to a directory to open up:

efm /path/to/dir