GithubHelp home page GithubHelp logo

cl-fm's Introduction

CL-FM

Overview

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.

screenshot

Work in progress. Many unimplemented features. Changes often. Not ready for prime time.

License

BSD license

Depends on

Quickstart

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.

Status

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.

cl-fm's People

Contributors

stacksmith avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.