cl-fm is a gtk-based file manager, written in Common Lisp. It features
- mouse operations
- emacs-like commands
- color-coding and tagging of files and directories
- hackability in Lisp.
Work in progress. Many unimplemented features. Changes often. Not ready for prime time.
BSD license
- cl-cffi-gtk
- gtk-emacs-like-input
Start by cloning this repo and gtk-emacs-like-input to a place where quicklisp will see it.
(ql:quickload :cl-fm)
(in-package :cl-fm)
(test :dir "...") ;put your test directory here - but be careful and use a scrap dir.
02-Oct-2016
Made some fixes with handling of filenames. It's still a mess and should be moved to a separate file, perhaps. But for now it works. The root directory is kept as a namestring (truename), so the final slash is there. Filenames are kept in the model, and therefore have to be namestrings. There are a few places that merge and manipulate names (activation, going up in hierarchy, etc).
Added folder icons and removed final slash in folder names in model - truename does the trick.
01-Oct-2016
Added <F5>
reload binding.
Added a rudimentary in-place renamer. It works, but due to internal issues with directory names ending with a slash, directory renaming is wacky. It works only when no final slash is added in edit, and F5 must be pressed afterwards. I will rework internal storage issues tomorrow.
KEY | BINDING |
---|---|
<F2> |
Edit selected file (single selection only) |
<F5> |
Reload current directory |
<LEFT> |
Open parent directory |
^ |
Open parent directory |
<C-0> |
Set Q to 0 (default) |
<C-1> |
Set Q to 1 (red) |
<C-2> |
Set Q to 2 |
<C-3> |
Set Q to 3 |
<C-4> |
Set Q to 4 |
<C-5> |
Set Q to 5 (default) |
<RET> |
Activate: for folders, open here; for files, open with external application (for now VLC) |
28-Sept-2016
Added in-place editing of filenames with F2. As with everything else, no changes are made to the filesystem - file-actions.lisp is just reporting requests. Setting q will write to xattr of the file.
Here is what works:
KEY | BINDING |
---|---|
<F2> |
Edit selected file (single selection only) |
<LEFT> |
Open parent directory |
^ |
Open parent directory |
<C-0> |
Set Q to 0 (default) |
<C-1> |
Set Q to 1 (red) |
<C-2> |
Set Q to 2 |
<C-3> |
Set Q to 3 |
<C-4> |
Set Q to 4 |
<C-5> |
Set Q to 5 (default) |
<RET> |
Activate: for folders, open here; for files, open with external application (for now VLC) |
Double-click is also activate.
Also, drag and drop (except for dragging out, as mentioned elsewhere)
23-Sept-2016
- added color q tagging with
<C-0>
to<C-5>
. This is an early test, but I've been wanting to color-tag files since early Macintosh days. It seems there is no file manager that does it, much less one that does it easily. So,<C-0>
clears color tagging, and<C-1>
to<C-5>
let you set a color between green and red for quality or whatever. For now, I am just colorizing the size field as color background breaks the stripy splendor of the tree control. See the screenshot... <UP>
and<DOWN>
arrows are bound to eli's instant keymap, with a function that just returns nil so GTK can take over the scrolling.- drag and drop is almost ready for action - try dragging files around and see the textual representation of the intended action. Seems to be correct for copy, move, etc and also outputs file lists.
22-Sept-2016... Works:
- Directory navigation by double-clicking directories;
- Also, left arrow goes up to parent - as well as ^.
Does not work
- dragging to other apps, as cl-cffi-gtk is broken. See this issue - basically, there is no way to set selection data when someone requests it.
- Drag and drop are close, just reporting for now.
Stupid
- double-clicking files starts vlc, for now - will dispatch on type soon.
- drag and drop are a little clunky with selections.